آموزش رایگان PHP

آموزش جامع کار با API در PHP (ارسال و دریافت داده‌ها به صورت استاندارد)

1405/08/02 15:46 محراب حسن زاده
آموزش جامع کار با API در PHP (ارسال و دریافت داده‌ها به صورت استاندارد)

مقدمه؛ API چیست و چرا در PHP به آن نیاز داریم؟

امروزه تقریباً تمام وب‌سایت‌ها و اپلیکیشن‌های مدرن برای تعامل با خدمات دیگر از API (رابط برنامه‌نویسی اپلیکیشن) استفاده می‌کنند. به عنوان مثال، برای اتصال به درگاه پرداخت، ارسال پیامک، دریافت آب و هوا یا احراز هویت کاربران از طریق شبکه‌های اجتماعی، شما باید بتوانید از داخل کدهای PHP خود به یک سرور خارجی درخواست (Request) ارسال کرده و پاسخ (Response) مناسب را دریافت کنید.

در این مقاله آموزشی، استانداردترین روش‌های برقراری ارتباط با وب‌سرویس‌ها در PHP را با تمرکز بر ابزار قدرتمند cURL بررسی می‌کنیم.

روش‌های کار با API در PHP

در PHP به طور کلی دو روش اصلی برای ارسال درخواست‌های HTTP وجود دارد:

  • تابع file_get_contents: ساده‌ترین روش برای درخواست‌های GET معمولی، اما فاقد انعطاف‌پذیری لازم برای پروژه‌های بزرگ.
  • کتابخانه cURL (Client URL Library): استانداردترین، سریع‌ترین و منعطف‌ترین ابزار برای انواع درخواست‌های GET، POST، PUT و DELETE همراه با مدیریت هدرها و امنیت بالا.

روش اول: استفاده از file_get_contents (ساده و سریع)

اگر فقط می‌خواهید یک درخواست GET ساده به یک API عمومی ارسال کنید و نیازی به هدرهای پیشرفته ندارید، این روش بسیار سریع است:


$apiUrl = "https://jsonplaceholder.typicode.com/posts/1";
$response = file_get_contents($apiUrl);

if ($response === FALSE) {
    die("خطا در دریافت داده‌ها");
}

// تبدیل رشته JSON به آرایه تعاملی PHP
$data = json_decode($response, true);
echo "عنوان پست: " . $data['title'];

روش دوم: استفاده از cURL (استاندارد و حرفه‌ای)

کتابخانه cURL به طور پیش‌فرض در بیشتر سرورهای PHP فعال است. فرآیند کار با cURL شامل ۴ مرحله اصلی است: ایجاد نشست، تنظیم پیکربندی، اجرای درخواست و بستن نشست.

۱. ارسال درخواست GET با cURL

در درخواست GET، ما داده‌ها را از وب‌سرویس دریافت می‌کنیم. کد زیر نمونه‌ای استاندارد از این متد است:


$url = "https://api.github.com/users/octocat";

// ۱. مقداردهی اولیه cURL
$ch = curl_init();

// ۲. تنظیم تنظیمات مربوطه
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // دریافت پاسخ به صورت رشته
curl_setopt($ch, CURLOPT_USERAGENT, 'MyPHPApp'); // هدر User-Agent برای امنیت برخی APIها

// ۳. اجرای درخواست و دریافت پاسخ
$response = curl_exec($ch);

// بررسی خطاهای احتمالی
if (curl_errno($ch)) {
    echo 'خطای cURL: ' . curl_error($ch);
} else {
    // تبدیل پاسخ JSON به آرایه
    $result = json_decode($response, true);
    echo "نام کاربر گیت‌هاب: " . $result['name'];
}

// ۴. بستن اتصال
curl_close($ch);

۲. ارسال درخواست POST با cURL

زمانی که می‌خواهید داده‌ای را به سرور مقصد ارسال کنید (مثلاً ثبت نام یک کاربر یا ارسال تراکنش مالی)، باید از متد POST استفاده کنید. در زیر هدرهای ارسال داده به صورت JSON نیز تنظیم شده است:


$url = "https://reqres.in/api/users";

// داده‌هایی که می‌خواهیم ارسال کنیم
$postData = [
    'name' => 'محمد رضایی',
    'job' => 'توسعه‌دهنده وب'
];

$ch = curl_init($url);

// تبدیل آرایه به JSON
$jsonData = json_encode($postData);

// تنظیمات ارسال POST و هدرها
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData),
    'Authorization: Bearer YOUR_API_TOKEN' // در صورت نیاز به احراز هویت
]);

$response = curl_exec($ch);

if (!curl_errno($ch)) {
    $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($statusCode === 201) {
        echo "کاربر با موفقیت ایجاد شد!\n";
        $responseData = json_decode($response, true);
        echo "شناسه کاربر: " . $responseData['id'];
    } else {
        echo "خطا در سرور با کد وضعیت: " . $statusCode;
    }
}

curl_close($ch);

نکات مهم و امنیتی در اتصال به APIها

برای توسعه کد امن و پایدار، موارد زیر را همیشه رعایت کنید:

  • بررسی کدهای وضعیت HTTP (HTTP Status Codes): پاسخ‌های موفق معمولاً رنج 200 دارند. خطاهای کاربر رنج 400 و خطاهای سرور رنج 500 هستند.
  • تایم‌اوت (Timeout): همیشه برای درخواست‌های خود زمان انتظار مشخص کنید تا اسکریپت شما در صورت قطع بودن سرور مقصد معلق نماند (مثلاً با تنظیم CURLOPT_TIMEOUT).
  • امنیت اطلاعات حساس: هرگز توکن‌ها و کلیدهای امنیتی (API Keys) خود را هاردکد نکنید؛ بلکه آن‌ها را در فایل‌های پیکربندی یا .env ذخیره کنید.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش ساخت پروژه MVC با PHP خام به صورت گام به گام طبق استانداردهای روز
1405/08/02 15:12

آموزش ساخت پروژه MVC با PHP خام به صورت گام به گام طبق استانداردهای روز

مطالعه بیشتر
آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب
1403/08/09 20:29

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب

مطالعه بیشتر
راهنمای جامع جلوگیری از SQL Injection در PHP (طبق استانداردهای گوگل)
1405/05/13 21:19

راهنمای جامع جلوگیری از SQL Injection در PHP (طبق استانداردهای گوگل)

مطالعه بیشتر
آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی
1403/08/04 18:52

آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

مطالعه بیشتر
آموزش کامل و امن آپلود فایل در PHP (مطابق استاندارد گوگل)
1405/05/01 20:17

آموزش کامل و امن آپلود فایل در PHP (مطابق استاندارد گوگل)

مطالعه بیشتر
آموزش کامل عملگرهای منطقی در PHP (همراه با تفاوت‌های کلیدی)
1405/04/03 23:56

آموزش کامل عملگرهای منطقی در PHP (همراه با تفاوت‌های کلیدی)

مطالعه بیشتر
آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)
1405/04/16 01:14

آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)

مطالعه بیشتر
آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده
1405/05/01 20:01

آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده

مطالعه بیشتر
چگونه یک فوتر چسبان در CSS بسازیم: آموزش ساخت فوتر ثابت و همیشگی
1403/06/02 17:39

چگونه یک فوتر چسبان در CSS بسازیم: آموزش ساخت فوتر ثابت و همیشگی

مطالعه بیشتر
راهنمای جامع پاک‌سازی داده‌های ورودی در PHP بر اساس استانداردهای گوگل
1405/04/27 22:21

راهنمای جامع پاک‌سازی داده‌های ورودی در PHP بر اساس استانداردهای گوگل

مطالعه بیشتر
آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)
1405/05/04 23:34

آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)

مطالعه بیشتر
آموزش توسعه و مدیریت پروژه‌های بزرگ در جاوا اسکریپت: آشنایی با ابزارها و فریم‌ورک‌های کاربردی
1403/08/04 19:43

آموزش توسعه و مدیریت پروژه‌های بزرگ در جاوا اسکریپت: آشنایی با ابزارها و فریم‌ورک‌های کاربردی

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد