rvasiliy/http_client

Http 客户端库

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