dm-software / http-client-middleware
HTTP 客户端请求处理器
v2.0.0
2024-08-29 13:57 UTC
Requires
- php: >=8.1
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
- psr/simple-cache: ^1.0
Requires (Dev)
- ext-zlib: *
- guzzlehttp/guzzle: ^7.9
- phpunit/phpunit: >=9.5
Suggests
- ext-zlib: Needed to use ZlibInflateMiddleware
README
不幸的是,psr-15,关于如何处理传入服务器请求的建议,并没有涵盖如何处理外出请求或客户端响应。
本包解决了这个问题。
安装
composer require dmt-software/http-client-middleware
使用
use DMT\Http\Client\RequestHandler; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestInterface; /** @var ClientInterface $client */ $handler = new RequestHandler($client); $response = $handler->handle($request); if ($response->getStatusCode() === 200) { // process the response }
中间件
中间件可以用来在客户端将请求发送到服务器之前处理请求,或者处理响应,例如应用认证、存储登录cookie或记录响应。
use DMT\Http\Client\MiddlewareInterface; use DMT\Http\Client\RequestHandlerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\RequestInterface; /** * Apply basic authentication header to the request */ class BasicAuthMiddleware implements MiddlewareInterface { private string $user = 'user'; private string $pass = '*****'; public function process(RequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $request = $request->withHeader( 'Authorization', sprintf('Basic %s', base64_encode("$this->user:$this->pass")) ); return $handler->handle($request); } }
要启用中间件,只需将这些添加到请求处理器中。
use DMT\Http\Client\RequestHandler; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestInterface; /** @var ClientInterface $client */ $handler = new RequestHandler( $client, $basicAuthMiddleware, $otherMiddleware, ); $response = $handler->handle($request);