technicalguru / rest-client
PHP 库,用于访问 REST 服务
Requires
- php: >=7.0.0
- technicalguru/utils: ~1
Requires (Dev)
- phpunit/phpunit: ^9
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 问题跟踪器 上报告错误、请求增强或拉取请求。