HttpClient - библиотека для создания систем для отправки и получения запросов посредством http протокола. Например REST сервисов.
- PHP: версия 5.6 и выше
composer require rvasiliy/http_client
или
// composer.json
"require": {
"rvasiliy/http_client": "*"
}
Для работы клиент может быть сконфигурирован посредством массива конфигурации. Конфигурация по умолчанию выглядит следующим образом:
$config = [
// базовый url, который будет добавлен как префикс к другим
'baseUrl' => '',
'serializer' => [
'class' => 'rvasiliy\\http_client\\serializer\\StringSerializer',
],
];
Если требуется обрабатывать ответы в формате json, то конфигурация должна быть такой:
$config = [
// базовый url, который будет добавлен как префикс к другим
'baseUrl' => '',
'serializer' => [
'class' => 'rvasiliy\\http_client\\serializer\\JsonSerializer',
'property' => [
// true - данные в виде массива
// false - данные в виде объекта
'asArray' => true,
],
],
];
require __DIR__ . '/vendor/autoload.php';
\rvasiliy\http_client\HttpClient::configure($config);
$client = \rvasiliy\http_client\HttpClient::getInstance();
или
require __DIR__ . '/vendor/autoload.php';
$client = \rvasiliy\http_client\HttpClient::getInstance();
$client->setConfig($config);
Получить доступ к объекту конфигурации можно так:
$config = \rvasiliy\http_client\HttpClient::getInstance()->getConfig();
Это можно использовать для получения доступа к переменным конфигурации по всему приложению.
С версии 2.0.0 если конфигурация не была применена, то будет создана конфигурация по умолчанию. Найти ее можно в файле config/default.php.
// создаем объект запроса
$request = new \rvasiliy\http_client\Request();
$request->setUrl('http://example.com/status');
$request->setParams(['name' => 'Jon']);
// отправляем запрос и получаем ответ
$response = $client->send($request);
С версии 1.1.0 объект запроса можно передавать в клиент с помощью сеттера.
// создаем объект запроса
$request = new \rvasiliy\http_client\Request();
$request->setUrl('http://example.com/status');
$request->setParams(['name' => 'Jon']);
// передаем запрос в клиент
$client->setRequest($request);
// отправляем запрос и получаем ответ
$response = $client->send();
Когда объект ответа получен, из него можно получить данные.
$data = $response->getData();
Формат получаемых данных зависит от используемого сериализатора в объекте ответа.
-
StringSerializer - данные не изменяются и возвращаются в таком же виде, в котором они були получены с сервера;
-
JsonSerializer - преобразует данные в массив или объект в зависимости от настроек;
-
Вы также можете создавать свои сериализаторы, реализуя интерфейс rvasiliy\http_client\Serializer.
Доступ к объекту сериализатора возможен через объект ответа:
$serializer = $response->getSerializer();
// подключаем автозагрузчик классов
require __DIR__ . '/vendor/autoload.php';
// массив конфигурации
$config = [
'baseUrl' => 'http://example.com',
'serializer' => [
'class' => 'rvasiliy\\http_client\\serializer\\JsonSerializer',
'property' => [
'asArray' => false,
],
],
];
// создаем и конфигурируем клиент
$client = \rvasiliy\http_client\HttpClient::getInstance();
$client->setConfig($config);
// создаем объект запроса
$request = new \rvasiliy\http_client\Request();
$request->setUrl('/status');
$request->setParams(['name' => 'Jon']);
// отправляем запрос
$response = $client->send($request);
// получаем данные
$data = $response->getData();