rvasiliy / http_client
Http 客户端库
v2.0.2
2022-03-10 17:33 UTC
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();