coolblue / http-client-middleware
PSR-18兼容http客户端的中间件解决方案。
1.2.0
2023-12-20 09:01 UTC
Requires
- php: ^8.0
- psr/http-client: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- phpspec/prophecy: ^1.17
- phpunit/phpunit: ^9.0 || ^10.0
- squizlabs/php_codesniffer: ^3.5
README
HTTP Client middleware 是一个 PSR-18 (HTTP Client) 的中间件解决方案。
此包包含一个中间件接口以及一个可用于处理中间件的现成 HTTP 客户端。
注意 此包不包含任何中间件实现。
理由
PSR-18 (HTTP Client) 提供的接口没有提供已知 HTTP 抽象(如 Guzzle 和 Symfony HttpClient)提供的任何(配置)选项。这使得该接口的实现可以互换,但需要您自己编写这些配置。这可能导致重复的代码,这可能是我们不希望的。
这可能可以通过使用类似于在 PSR-15 (HTTP Server Request Handlers) 中定义的中间件解决方案来解决。使用中间件可以在不扩展或包装客户端的情况下集中化功能。它还允许您在执行实际请求之前和之后执行操作。
安装
composer require coolblue/http-client-middleware
使用方法
中间件需要符合接口 \Coolblue\Http\Client\MiddlewareInterface
<?php declare(strict_types=1); namespace Coolblue\Http\Client; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; interface MiddlewareInterface { public function process(RequestInterface $request, ClientInterface $client): ResponseInterface; }
创建一个支持中间件的客户端
$client = new Client(); // an instance of \Psr\Http\Client\ClientInterface $middlewareOne = new Middleware(); // an instance of \Coolblue\Client\Http\MiddlewareInterface $middlewareTwo = new Middleware(); // an instance of \Coolblue\Client\Http\MiddlewareInterface $middlewareClient = new \Coolblue\Http\Client\MiddlewareClient( $client, $middlewareOne, $middlewareTwo );