PSR-18 HTTP 客户端

最后更新于:2022-04-02 02:19:57

[TOC] ## 安装 ``` composer require psr/http-client ``` ## 接口
Psr\Http\Client\ClientInterface ``` namespace Psr\Http\Client; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; interface ClientInterface { /** * 发送一个 PSR-7 标准的请求,返回一个 PSR-7 格式的响应. * * @param RequestInterface $request * * @return ResponseInterface * * @throws \Psr\Http\Client\ClientExceptionInterface 发生错误将抛出客户端异常接口对象 * */ public function sendRequest(RequestInterface $request): ResponseInterface; } ```

Psr\Http\Client\ClientExceptionInterface ``` namespace Psr\Http\Client; /** * 每个HTTP客户端相关的异常都必须实现此接口. */ interface ClientExceptionInterface extends \Throwable { } ```

Psr\Http\Client\RequestExceptionInterface ``` namespace Psr\Http\Client; use Psr\Http\Message\RequestInterface; /** * 请求失败时的异常. * * 举例: * - 请求无效 (e.g. 参数缺失) * - 请求运行错误 (e.g. 响应体不可见) */ interface RequestExceptionInterface extends ClientExceptionInterface { /** * 获取请求对象. * * 请求对象可能和客户端接口发送的对象不一致. * * @return RequestInterface */ public function getRequest(): RequestInterface; } ```

Psr\Http\Client\NetworkExceptionInterface ``` namespace Psr\Http\Client; use Psr\Http\Message\RequestInterface; /** * 因网络原因导致请求无法完成时抛出该异常. * * 抛出该异常将没有响应体,因为收不到响应体时也会抛出这个异常. * * 举例:域名不能解析或连接失败. */ interface NetworkExceptionInterface extends ClientExceptionInterface { /** * 返回请求对象. * * 返回的请求对象可能和客户端接口发送的对象不一致. * * @return RequestInterface */ public function getRequest(): RequestInterface; } ```

';