technicalguru/rest-client

PHP 库,用于访问 REST 服务

v1.0.1 2021-06-19 11:50 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:43 UTC


README

一个基于 php-curl 的轻量级 REST 客户端。

许可

本项目受 GNU LGPL 3.0 许可。

安装

通过 Composer

composer install technicalguru/rest-client

通过包下载

您可以从 GitHub 发布页面 下载源代码包。

如何使用

创建请求

根据您的意图,您只需要 URL 和如果需要的话,还需要正文

use TgRestClient\Request;

$request = Request::get('https://www.example.com/endpoint');
$request = Request::put('https://www.example.com/endpoint', $myObject);
$request = Request::post('https://www.example.com/endpoint', $myObject);
$request = Request::delete('https://www.example.com/endpoint/123');

请求为每种 HTTP 方法提供了静态方法:HEAD、GET、POST、PUT、PATCH、OPTIONS、DELETE。

设置请求头

可以像这样设置请求的额外头

use TgRestClient\Headers;

// individual headers
$request
    ->setHeader(Headers::AUTHORIZATION, 'Bearer 1234567890')
    ->setHeader(Headers::COOKIE,        'XSESSION=qwefjnqlkiu117o11ndn1');
    
// set multiple headers with a (key => value) array
$request->addHeaders($headers);

请求正文

默认情况下,Request 假设您的正文需要是 application\json 类型。因此,实现已经知道如何构建 JSON 编码,您可以将对象或数组传递给正文。 Request 将自动进行字符串化。对于 application/x-www-form-urlencoded 内容也有效。但是,您需要相应地设置 Content-Type 头。

use TgRestClient\Request;
use TgRestClient\Headers;

$parameters = array(
    'name1' => 'value1',
    'name2' => 'value2',
);
$request = Request::post($url, $parameters)
    ->setHeader(Headers::CONTENT_TYPE, Headers::TYPE_X_WWW_FORM_URLENCODED);

执行

一旦您配置了请求,您就可以简单地执行它

$response = $request->execute();

执行调用接受一个可选参数 - 调用超时的秒数。默认超时时间为 5 秒。该方法将在此时间后返回最新,并给您一个 Response 对象。

响应

响应对象返回您需要了解您的调用结果的所有信息

$httpCode    = $response->getHttpCode();
$bodyObject  = $response->getBody();
$rawBody     = $response->getRawBody();
$headerValue = $response->getHeader('Server');

getBody() 方法在服务器返回了 JSON 编码的正文时返回对象。否则,您也将通过此方法获得原始正文。

定义默认请求头

每次为每个单独的请求设置相同的请求头可能非常累人。这就是为什么您可以定义默认头。

use TgRestClient\Headers;

// Single header
Headers::setDefaultHeader('www.example.com', Headers::AUTHORIZATION, 'Bearer 1234567890');

// or multiple
Headers::addDefaultHeaders('www.example.com', $myDefaultHeaders);

这些头将为请求到 www.example.com 的每个请求可用。但是,如果您需要,您可以覆盖单个请求的头。只需在请求对象上设置头即可。

同时执行请求

该库的一个优点是能够同时执行多个请求。

use TgRestClient\Client;
use TgRestClient\Request;

// Build your request objects
$request1  = Request::get($url1);
$request2  = Request::get($url2);
...

// Create the client
$client = new Client();

// Add the requests to the client and get the Response objects
$response1 = $client->addCall($request1);
$response2 = $client->addCall($request2);
...

// Now execute all together
$responses = $client->run();

请注意,在您调用客户端上的 run() 方法之前,不能使用 Response 对象。

run() 方法可以接受一个秒数的超时(默认为 5)。它还返回一个包含 Response 对象的数组,顺序与您将它们添加到客户端的顺序相同。这意味着第一个响应属于您添加的第一个请求,第二个响应属于您添加的第二个请求,以此类推。

您还可以询问 Response 对象它正在执行哪个 Request

$request1 = $responses[0]->getRequest();
$request2 = $responses[1]->getRequest();

开发者备注

PHP 单元测试需要 gorest.co.in API 令牌。大多数测试在没有存储在环境变量 GOREST_TOKEN 中的此令牌的情况下将不会执行。

贡献

GitHub 问题跟踪器 上报告错误、请求增强或拉取请求。