بکندباز

curl در php ‌+ نمونه کد

امروز، قصد داریم افزونه cURL در PHP را با هم بررسی کنیم، که به شما امکان می‌دهد درخواست‌های HTTP را از درون کد خود انجام دهید.

شما در کدنویسی PHP خود خیلی پیش می آید که نیاز به برقراری ارتباط با وب سایت های خارجی دارید. چه برای اتصال به API های REST برای دریافت داده ها یا دانلود منابع از یک وب سایت خارجی باشد، شما کتابخانه ای می خواهید که به شما امکان می دهد این کار را بدون زحمت انجام دهید.

در PHP روش های مختلفی وجود دارد که می توانید برای اتصال و ارتباط با انواع مختلف سرورها استفاده کنید. یکی از ساده ترین راه ها استفاده از تابع file_get_contents برای خواندن فایل های remote است. از سوی دیگر، می‌توانید از سوکت‌ها نیز برای پیاده‌سازی ارتباط مشتری و سرور استفاده کنید. اما در این مقاله، ما قصد داریم به طور مفصل در مورد افزونه cURL با مثال‌های واقعی صحبت کنیم.

cURL مخفف client URLs است و کتابخانه ای است که به شما امکان می دهد اطلاعات را با سینتکس URL ارسال و دریافت کنید. در واقع، از کتابخانه libcurl (ساخته شده توسط دانیل استنبرگ) استفاده می کند که به شما امکان می دهد با انواع مختلف پروتکل ها به انواع مختلف سرورها متصل شوید و با آنها ارتباط برقرار کنید. جدا از HTTP و HTTPS، کتابخانه libcurl از پروتکل هایی مانند FTP، Gopher، Telnet، DICT، File و LDAP نیز پشتیبانی می کند.

از بخش بعدی به بعد، چند مثال در دنیای واقعی برنامه نویسی را مرور خواهیم کرد تا نشان دهیم چگونه می توانید از توابع cURL در PHP در پروژه های واقعی خود استفاده کنید.

نمونه های پروژه های واقعی

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

$composer require guzzlehttp/guzzle:^7.0
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 6 installs, 0 updates, 0 removals
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing psr/http-client (1.0.1): Loading from cache
  - Installing ralouphie/getallheaders (3.0.3): Loading from cache
  - Installing guzzlehttp/psr7 (1.7.0): Loading from cache
  - Installing guzzlehttp/promises (1.4.1): Loading from cache
  - Installing guzzlehttp/guzzle (7.2.0): Loading from cache
guzzlehttp/psr7 suggests installing laminas/laminas-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
Writing lock file
Generating autoload files

ارسال درخواست GET با استفاده از Guzzle

در این بخش، خواهیم دید که چگونه می توانید درخواست های GET را با Guzzle ارسال کنید.

ما مثالی را که قبلاً در مورد آن صحبت کردیم با این روش باز نویسی می کنیم، زیرا به شما کمک می کند تا بفهمید چگونه می توانید کد cURL PHP موجود خود را به پیاده سازی مبتنی بر Guzzle تبدیل کنید.

بیایید نگاهی به مثال اصلاح شده بیندازیم.

<?php
require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client()‎;
$response = $client->get('https://example.com');

$responseContents = $response->getBody()‎;

یک نمونه از کلاس \GuzzleHttp\Client ایجاد کرده ایم و به متغیر $client اختصاص داده شده است. و اکنون، شما به بسیاری از متد های کاربردی ارائه شده توسط کلاس \GuzzleHttp\Client دسترسی دارید.

در مورد ما، باید محتوا را با متد GET واکشی کنیم، بنابراین از متد get کلاس \GuzzleHttp\Client استفاده کرده‌ایم و شیء GuzzleHttp\Psr7\Response را برمی‌گرداند. شیء GuzzleHttp\Psr7\Response متدهای مختلفی مانند getBody، getReasonPhrase، getStatusCode و غیره را ارائه می دهد. ما از متد getBody برای واکشی محتوای بدنه پاسخ استفاده کرده ایم.

بنابراین به این ترتیب می توانید درخواست های HTTP GET را با Guzzle انجام دهید.

چگونه یک درخواست POST با Guzzle ایجاد کنیم

در این بخش، خواهیم دید که چگونه می توانید درخواست های HTTP POST را با Guzzle انجام دهید.

ما مثال curl_post_example.php را که در بخش قبلی مورد بحث قرار دادیم، اصلاح می کنیم. کد اصلاح شده با Guzzle به این شکل است.

<?php
require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client()‎;
$options = [
    'form_params' => [
        "field_name_1" => "Value 1",
        "field_name_2" => "Value 2",
        "field_name_3" => "Value 3",
    ]
];

$response = $client->post("{POST_REST_ENDPOINT}", $options);
$responseContents = $response->getBody()‎;
?>

از آنجایی که این یک درخواست POST است، باید آرایه $options را به عنوان آرگومان دوم متد post ارسال کنیم. مثال ما، حاوی داده های فرم است که باید به عنوان داده POST ارسال کنیم.

اگر نمی‌دانید چگونه داده‌های JSON را پست کنید، فقط باید کلید form_params را به json تغییر دهید و به سادگی داده‌ها به صورت JSON ارسال می‌شوند!

همچنین، اگر می‌خواهید هر هدر HTTP را همراه با درخواست ارسال کنید، می‌توانید این کار را با کلید headers انجام دهید، همانطور که در قطعه زیر نشان داده شده است.

$headers = array(
    'Content-Type'   => 'application/json'
);
$options = [
    'json' => [
            "field_name_1" => "Value 1",
            "field_name_2" => "Value 2",
            "field_name_3" => "Value 3",
    ],
    'headers' => $headers
];

در واقع، کتابخانه Guzzle گزینه های پیکربندی زیادی را برای هر روش ارائه می دهد. همچنین، راه‌های متعددی برای انجام یک کار وجود دارد، بنابراین من شما را تشویق می‌کنم آن را با جزئیات بررسی کنید، و مطمئن هستم که سرگرم‌کننده خواهد بود!

این یک معرفی سریع برای کتابخانه Guzzle، همراه با توابع PHP cURL بود.

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*