coolblue/http-client-middleware

PSR-18兼容http客户端的中间件解决方案。

1.2.0 2023-12-20 09:01 UTC

This package is auto-updated.

Last update: 2024-09-20 10:28:38 UTC


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