Curl GET-запрос с помощью PHP

Руководство по использованию cURL запроса с помощью PHP. Узнайте о GET-запросе и о том, как реализовать GET-запрос с помощью curl в PHP.
1 min read
curl GET Request with PHP

curl – это инструмент командной строки и библиотека, которая используется для передачи данных с помощью URL-адресов. В контексте веб-разработки curl позволяет пользователям делать запросы и взаимодействовать с различными интернет-ресурсами, такими как веб-сайты и API, непосредственно из командной строки или с помощью скриптов.

curl поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP и FTPS, что делает его невероятно универсальным для таких задач, как передача файлов, получение данных и интеграция API. Способность curl обрабатывать сложные операции и отправлять различные типы запросов сделала его незаменимым инструментом, обеспечивающим бесперебойную связь между приложениями и удаленными серверами. Гибкость и простота использования делают его фундаментальным компонентом в современных рабочих процессах веб-разработки.

GET-запросы – это важный компонент веб-коммуникации, предназначенный для получения информации или данных с определенного ресурса на веб-сервере. В этом руководстве вы узнаете, как использовать curl для выполнения GET-запроса с помощью PHP.

Что такое GET-запрос

GET-запрос – это метод HTTP, предназначенный для получения информации или данных с определенного ресурса на веб-сервере. Например, когда вы вводите URL-адрес в веб-браузере и нажимаете клавишу Enter, вы вызываете GET-запрос. Браузер выполняет GET-запрос к серверу и возвращает веб-страницу, которая отображается в браузере.

Цель GET-запроса – запросить у сервера определенный ресурс, будь то HTML-страница, изображение, документ или даже данные из API. Простота GET-запроса заключается в его методе: это идемпотентная операция, то есть она не должна изменять состояние сервера или запрашиваемого ресурса. GET-запрос предназначен только для чтения и обычно не предполагает отправку данных или внесение изменений на сервер; его основная функция – получение данных.

GET-запросы также поддерживают добавление пар ключ-значение, известных как параметры запроса, к URL. Параметры запроса позволяют указать, что именно вы хотите получить. Например, когда вы ищете что-то в поисковой системе, введенный вами запрос передается в виде серии параметров в GET-запросе на сервер поисковой системы. Сервер обрабатывает эти параметры, извлекает соответствующие результаты поиска и отправляет их обратно в виде ответа, который затем отображается в вашем веб-браузере.

Важно отметить, что поскольку GET-запросы открывают данные в URL, они не подходят для отправки конфиденциальной или секретной информации, поскольку параметры видны всем, кто может просмотреть URL.

Реализация GET-запроса с помощью curl в PHP

В этом разделе вы узнаете, как инициализировать сеансы curl, задавать URL и другие параметры, устанавливать специфические параметры, отправлять запросы к удаленным ресурсам и обрабатывать ответы в ваших PHP-приложениях.

Чтобы продолжить работу, вам нужно убедиться, что в вашей версии PHP есть поддержка curl. Большинство современных PHP-инсталляций поставляются с включенной поддержкой curl по умолчанию, но всегда полезно проверить, есть ли она у вас. Вы можете проверить версию и конфигурацию PHP с помощью функции phpinfo(). Для этого создайте папку с именемphp-curl, а в ней – файл info.php. Вставьте в этот файл следующий код:

<?php
phpinfo();

В терминале выполните команду php -S localhost:8000 и перейдите по адресу http://localhost:8000/info.php в браузере. На открывшейся веб-странице прокрутите вниз до раздела curl и подтвердите, что поддержка curl включена:

Реализация GET-запроса с помощью curl в PHP

После того как вы убедились, что функция curl включена, и перед инициализацией сеанса curl вам нужно создать новый файл с именем curl.php в корневой папке проекта. Затем добавьте следующий код в новый файл curl.php:

<?php
$ch = curl_init();

Это инициирует сеанс curl с помощью функции curl_init(). Эта функция инициализирует новую сессию curl и возвращает экземпляр handle curl – важный инструмент для дальнейших операций с curl, таких как установка параметров и отправка запросов.

Настройка URL и других параметров

Настройка параметров curl, включая установку URL, является важной частью выполнения HTTP-запросов с помощью curl в PHP. Она закладывает основу HTTP-запроса, определяя целевой сервер, тип выполняемого запроса (GET, POST и т.д.), а также необходимую аутентификацию или параметры.

PHP предоставляет функцию curl_setopt(), которая позволяет легко установить различные параметры для хэндла сессии curl, а также настраивать поведение запроса curl, указывая различные параметры и значения.

Функция curl_setopt() имеет вид curl_setopt(CurlHandle $handle, int $option, mixed $value). $handle – это хэндл, возвращаемый функцией curl_init(), $option – это конкретная опция, которую вы хотите установить, а $value – это значение, которое вы хотите установить для указанной опции.

Чтобы задать URL, добавьте следующий код в файл curl.php:

$url = "https://dummyjson.com/products";
curl_setopt($ch, CURLOPT_URL, $url);

Этот код использует функцию curl_setopt() для установки параметра URL для хэндла сессии curl. CURLOPT_URL – это константа, обозначающая опцию установки URL для запроса curl.

Теперь давайте рассмотрим несколько других параметров, которые вы можете настроить.

Чтобы установить опцию curl для более контролируемого выполнения HTTP-запросов, добавьте следующий код в файл curl.php:

// Set a timeout for the cURL request
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// return the response from the server as a string instead of outputting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// avoid following redirects, if any
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

В этом коде CURLOPT_TIMEOUT настроен на значение 30, определяющее максимальное время выполнения запроса curl в тридцать секунд. Это гарантирует, что если запрос будет выполняться дольше тридцати секунд, он завершится по таймауту, предотвращая длительное ожидание.

CURLOPT_RETURNTRANSFER имеет значение true, указывая curl возвращать ответ от сервера в виде строки, а не отображать его напрямую. Это позволит вам перехватывать данные ответа и манипулировать ими внутри PHP-скрипта.

И наконец, CURLOPT_FOLLOWLOCATION имеет значение false, указывающее на то, что curl не должен автоматически следовать за HTTP-перенаправлениями. Отключив автоматическое перенаправление, скрипт сохраняет контроль над потоком запросов, что позволяет настраивать ответы на перенаправления.

Подробнее о других опциях, которые вы можете настроить, вы можете узнать из документации по PHP.

Выполнение GET-запроса

Чтобы выполнить запрос и просмотреть ответ, добавьте следующий код в файл curl.php:

// Execute the cURL request and capture the response
$response = curl_exec($ch);
// Check for cURL errors
if (curl_errno($ch)) {
   echo 'Curl error: ' . curl_error($ch);
} else {
   // Decode JSON response if it is a JSON string
   $decodedResponse = json_decode($response, true);
   // Check if decoding was successful
   if ($decodedResponse !== null) {
       // Output the JSON response to the UI
       header('Content-Type: application/json');
       echo json_encode($decodedResponse, JSON_PRETTY_PRINT);
   } else {
       // If the response is not valid JSON, echo it as plain text
       echo $response;
   }
}
// Close cURL session
curl_close($ch);

Затем перейдите по адресу http://localhost:8000/curl.php в браузере, и при загрузке страницы вы должны получить массив товаров в формате JSON:

Выполнение GET-запроса

Отправка GET-запроса с параметрами

Чтобы указать параметры в URL, добавьте следующий код $url = "https://dummyjson.com/products";;:

// Query parameters
$params = [
   'limit' => 2
];

// Construct the complete URL with query parameters
$url .= '?' . http_build_query($params);

В этом коде вы определяете "https://dummyjson.com/products" в качестве базового URL. Затем вы определяете параметр запроса limit со значением 2 в ассоциативном массиве $params. Чтобы включить этот параметр в URL, вы используете функцию http_build_query($params), которая преобразует ассоциативный массив в строку запроса, закодированную в URL. Полученная строка запроса конкатенируется с исходным URL с помощью вопросительного знака, создавая полный URL с указанным параметром запроса. Результирующий URL выглядит следующим образом: "https://dummyjson.com/products?limit=2".

Чтобы проверить это, перейдите по адресу http://localhost:8000/curl.php в браузере и перезагрузите страницу. Вы должны получить массив, содержащий только два продукта в формате JSON:

Отправка GET-запроса с параметрами

Заключение

В этой статье вы узнали, как выполнять GET-запросы с помощью curl в PHP. Понимание основ GET-запроса закладывает фундамент для упорядоченного обмена данными.

Используя различные опции curl, разработчики могут настраивать свои GET-запросы, обеспечивая точный контроль тайм-аутов, управление перенаправлениями и получение ответов в виде строк для дальнейших манипуляций. Такая гибкость позволяет разработчикам тонко настраивать взаимодействие с веб-серверами и обеспечивает эффективное и целенаправленное получение данных.

Чтобы узнать больше об использовании curl, ознакомьтесь с этим руководством по использованию curl с Python и этим руководством по использованию curl с прокси.