johnshopkins / http-exchange
PHP HTTP 客户端适配器集合,使更换 HTTP 客户端依赖变得快捷简单。
Requires
- php: >=8.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
- phpunit/phpunit: ^10.3
Suggests
- guzzlehttp/guzzle: HTTP client supported by this library
This package is auto-updated.
Last update: 2024-09-21 15:48:39 UTC
README
PHP HTTP 客户端适配器集合,使更换 HTTP 客户端依赖变得快捷简单。
可用适配器
要求
- PHP >= 8.0
- Guzzle >= 6.5
安装
要安装此库,您需要在项目中使用 Composer。
composer require johnshopkins/http-exchange
基本用法
单次请求
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client); $response = $http->get('http://httpbin.org/get'); $body = $response->getBody(); echo $body->url; // prints: http://httpbin.org/get
批量请求
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client); $responses = $http->batch([ ['get', 'http://httpbin.org/get'], ['post', 'http://httpbin.org/post'] ]); foreach ($responses as $response) { $body = $response->getBody(); echo $body->url . "\n"; } // prints: // http://httpbin.org/get // http://httpbin.org/post
错误处理
单次请求
如果请求失败,将抛出 HttpExchange\Exceptions\HTTP 异常。有关更多信息,请参阅异常方法文档。
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client); try { $response = $http->get('http://httpbin.org/status/503'); $body = $response->getBody(); } catch (\Exception $e) { echo $->getCode() . ': ' . $e->getMessage(); } // prints: 503: Server error: `GET http://httpbin.org/status/503` resulted in a `503 SERVICE UNAVAILABLE` response
批量请求
在批量请求中,如果任一请求失败,而不是抛出 HttpExchange\Exceptions\HTTP,异常将被返回。这允许您的应用程序优雅地处理失败的请求,同时处理成功的请求。
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client); $responses = $http->batch([ ['get', 'http://httpbin.org/get'], ['get', 'http://httpbin.org/status/503'] ]); foreach ($responses as $response) { if ($response->getStatusCode() === 200) { $body = $response->getBody(); echo $body->url . "\n"; } else { echo $body->url . "This request failed :(\n"; } } // prints: // http://httpbin.org/get // This request failed :(
或者,您可以检查每个请求返回的对象类型(HttpExchange\Response 或 HttpExchange\Exceptions\HTTP),并根据需要进行处理。
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client); $responses = $http->batch([ ['get', 'http://httpbin.org/get'], ['get', 'http://httpbin.org/status/503'] ]); foreach ($responses as $response) { if ($response instanceof HttpExchange\Response) { $body = $response->getBody(); echo $body->url . "\n"; } else { echo $body->url . "This request failed :(\n"; } } // prints: // http://httpbin.org/get // This request failed :(
文档
初始化
Guzzle 6
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle6($client);
Guzzle 7
$client = new GuzzleHttp\Client(); $http = new HttpExchange\Adapters\Guzzle7($client);
适配器方法
batch(array $requests)
并发发送多个请求。
返回:包含每个请求结果的数组。一个 HttpExchange\Response 对象表示成功的请求,而一个 HttpExchange\Exceptions\HTTP 异常对象表示失败的请求。
参数
$requests:要并发执行的请求数组。格式:$requests = [[$method, $url, $request_options], ...];
get(array $requests)
执行 GET 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
post(array $requests)
执行 POST 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
put(array $requests)
执行 PUT 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
delete(array $requests)
执行 DELETE 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
patch(array $requests)
执行 PATCH 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
head(array $requests)
执行 HEAD 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
options(array $requests)
执行 OPTIONS 请求。
返回:一个 HttpExchange\Response 对象。如果请求失败,则抛出 HttpExchange\Exceptions\HTTP 异常对象。
参数
响应方法
getBody()
获取响应体。
返回:如果响应是 XML,则为 SimpleXMLElement 对象;如果响应是 JSON,则为对象或数组。
getStatusCode()
获取响应的 HTTP 状态码。
返回:整数
异常方法
PHP 异常的所有默认方法都可用,加上
getStatusCode()
获取响应的 HTTP 状态码。
返回:整数