rvasiliy/http_client

Http client library

v2.0.2 2022-03-10 17:33 UTC

This package is auto-updated.

Last update: 2024-09-10 22:50:40 UTC


README

Latest Stable Version Total Downloads Build Status

Описание

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();