rvasiliy / http_client
Http client library
Requires
- php: >=5.6.0
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^5
README
Описание
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();