🌐 درس هشتم: کار با API (مقدماتی)؛ ارتباط دنیای بیرون با سایت شما
🎯 هدف این درس: یادگیری نحوه دریافت اطلاعات از سرویسهای خارجی (مانند قیمت ارز، آبوهوا یا پنل پیامک) با استفاده از cURL و پردازش دادههای JSON در PHP.
مهمان عزیز! 👋
تا الان تمام دادههای ما یا توسط کاربر وارد میشدند یا در دیتابیس خودمان بودند. اما وبسایتهای مدرن «جزیره» نیستند؛ آنها مدام با دنیای بیرون در ارتباطند.
وقتی میخواهید قیمت لحظهای دلار را نمایش دهید، یا وقتی کاربری ثبتنام میکند و برایش SMS ارسال میشود، شما در حال کار با API (رابط برنامهنویسی کاربردی) هستید. در این درس یاد میگیریم چگونه به عنوان یک توسعهدهنده PHP، دادهها را از سرویسهای دیگر بگیریم و در سایت خودمان استفاده کنیم.
💡 API چیست؟
API مانند یک پیشخوان رستوران است. شما (کلاینت) سفارش خود را میدهید، آشپزخانه (سرور مقصد) غذا را آماده میکند و گارسون (API) آن را برای شما میآورد. زبان مشترک این ارتباط معمولاً JSON است.
📡 مرحله ۱: آشنایی با cURL در PHP
برای ارسال درخواست به یک آدرس اینترنتی دیگر، از کتابخانه قدرتمند cURL استفاده میکنیم. این ابزار به شما اجازه میدهد انواع درخواستهای HTTP (مثل GET و POST) را شبیهسازی کنید.
curl_request.php
PHP
8.x
<?php
// ۱. شروع جلسه cURL
$ch = curl_init();
// ۲. تنظیم آدرس API مورد نظر
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
// ۳. تنظیم برای بازگرداندن نتیجه به جای نمایش مستقیم
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// ۴. اجرای درخواست و ذخیره پاسخ
$response = curl_exec($ch);
// ۵. بستن جلسه
curl_close($ch);
echo $response;
📦 مرحله ۲: پردازش دادههای JSON
اکثر APIها دادهها را به فرمت JSON برمیگردانند. برای اینکه بتوانیم در PHP از این دادهها استفاده کنیم، باید آنها را با تابع json_decode() به آرایه تبدیل کنیم.
parse_json.php
PHP
8.x
<?php
// فرض کنید $response دادههای JSON دریافتی از مرحله قبل است
$data = json_decode($response, true); // true برای تبدیل به آرایه انجمنی
if ($data) {
// دسترسی به دادهها مثل یک آرایه معمولی
echo "نام: " . $data['name'];
echo "<br>ایمیل: " . $data['email'];
} else {
echo "خطا در تبدیل JSON.";
}
🌤️ مرحله ۳: مثال واقعی (دریافت وضعیت آبوهوا)
بیایید یک مثال واقعی بزنیم. فرض کنید میخواهیم دمای هوای تهران را از یک API رایگان بگیریم.
weather_api.php
PHP
8.x
<?php
$apiKey = 'YOUR_API_KEY';
$city = 'Tehran';
$url = "https://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$weatherData = json_decode($result, true);
if (isset($weatherData['main']['temp'])) {
$temp = $weatherData['main']['temp'] - 273.15; // تبدیل کلوین به سانتیگراد
echo "دمای فعلی تهران: " . round($temp, 1) . " درجه سانتیگراد";
}
❌ خطاهای رایج در کار با API
🚫 اشتباه رایج:
عدم بررسی خطاهای cURL. اگر سرور مقصد قطع باشد، اسکریپت شما ممکن است هنگ کند. همیشه از curl_error() برای دیباگ استفاده کنید.
- فراموش کردن CURLOPT_RETURNTRANSFER: اگر این گزینه را true نکنید، خروجی API مستقیماً در صفحه چاپ میشود و نمیتوانید آن را پردازش کنید.
- اعتماد به ساختار JSON: همیشه با
isset()چک کنید که کلیدهای مورد نظر در پاسخ وجود دارند یا خیر.
🏁 جمعبندی درس هشتم
مهمان عزیز، در این درس یاد گرفتی:
- ✅ مفهوم API و نقش آن در وب مدرن.
- ✅ نحوه ارسال درخواست با cURL.
- ✅ تبدیل دادههای JSON به آرایههای قابل استفاده در PHP.
- ✅ یک مثال عملی از دریافت داده از یک سرویس خارجی.
🎓 تمرین عملی درس هشتم
سعی کن از یک API رایگان (مثل API لیست کاربران تصادفی) استفاده کنی و نام و عکس ۵ کاربر را در یک جدول HTML در سایتت نمایش دهی.
🗺️ نقشه راه دوره: شما اینجا هستید!
برای اینکه بدانی دقیقاً کجای مسیر هستی و چه درسهایی در انتظار توست، به جدول زیر نگاه کن. درس فعلی با رنگ متفاوت مشخص شده است.
| درس | عنوان درس | آنچه یاد میگیرید |
|---|---|---|
| ۱ | ارتباط با دیتابیس (PDO) | اتصال امن به MySQL، جلوگیری از SQL Injection |
| ۲ | مدیریت نشستها (Sessions) | ساخت سیستم لاگین/خروج، مدیریت دسترسی کاربران |
| ۳ | کار با فایلها (File Handling) | آپلود تصویر، خواندن و نوشتن در فایلها |
| ۴ | مدیریت خطاها (Error Handling) | استفاده از Try/Catch، لاگگیری خطاها |
| ۵ | مقدمهای بر شیگرایی (OOP) | کلاس، شیء، متد، ویژگیها |
| ۶ | ساختاردهی پروژه (MVC مقدماتی) | جداسازی منطق از ظاهر، فایلهای Config |
| ۷ | امنیت پیشرفته | هش کردن پسورد، محافظت در برابر XSS و CSRF |
| ۸ | کار با API (مقدماتی) | دریافت داده از API خارجی (cURL)، JSON |
| ۹ | پروژه نهایی سطح متوسط | ساخت وبلاگ کامل با قابلیت لاگین و مدیریت |



