dm-software/http-client-middleware

HTTP 客户端请求处理器

v2.0.0 2024-08-29 13:57 UTC

This package is auto-updated.

Last update: 2024-08-30 08:21:42 UTC


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);