api-clients/transport

注入中间件的 clue/buzz-react

3.2.0 2018-07-09 16:52 UTC

README

Build Status Latest Stable Version Total Downloads Code Coverage License PHP 7 ready

简而言之,这个包是对 clue/buzz-react 的包装,添加了 中间件

安装

通过 Composer 安装,使用以下命令,它将自动检测最新版本并将其绑定到 ^

composer require api-clients/transport

用法

可以使用工厂创建客户端

$locator = new MiddlewareLocator(); // A concrete class implementing the middleware locator interface 
$loop = EventLoopFactory::create(); // The event loop
$options = []; // Client options, as described below
$client = Factory::create($locator, $loop, $options);

接下来,您可以发出 PSR-7 请求

$request = new PsrRequest(); // 
$requestOptions = []; // Options such as middleware settings
$client->request($request, $requestOptions)->done(function (ResponseInterface $response) {
    // Handle the response
});

中间件

中间件通过选项参数传递给客户端。在这个例子中使用了 api-clients/middleware-delay。向客户端添加中间件很简单,将一个数组添加到 $options 中,将 Options::MIDDLEWARE 作为索引,包含中间件类名。您还可以通过 $options 数组传递中间件的选项。只需在数组内部添加一个新数组,将中间件类名作为索引,并将所需的选项传递给它。

$options = [
    Options::DEFAULT_REQUEST_OPTIONS => [
        \ApiClients\Middleware\Delay\DelayMiddleware::class => [
            \ApiClients\Middleware\Delay\Options::DELAY => 3,
        ],
    ],
    Options::MIDDLEWARE => [
        \ApiClients\Middleware\Delay\DelayMiddleware::class,
    ],
];

$client = new Client($loop, $container, $browser, $options);

可以按请求更改中间件选项,这个特定的请求将只有5秒的延迟,而不是默认的3秒

$requestOptions = [
    \ApiClients\Middleware\Delay\DelayMiddleware::class => [
        \ApiClients\Middleware\Delay\Options::DELAY => 5,
    ],
];
$client->request($request, $requestOptions);

选项

Options::DNS

用于解析主机名的 DNS 服务器,默认为 8.8.8.8

Options::SCHEMA

URI 的模式部分,默认为 https

Options::HOST

URI 的主机部分,必需。

Options::PORT

URI 的端口部分,可选。

Options::PATH

URI 的路径部分,默认为 /

Options::HEADERS

带有头的键值数组,默认为 []

Options::MIDDLEWARE

包含中间件类名的数组,例如 [MiddlewareOne::class, MiddlewareTwo::class],默认为 []

Options::DEFAULT_REQUEST_OPTIONS

默认请求选项集,主要对需要所有请求的中间件有用,默认为 []

许可证

MIT 许可证 (MIT)

版权所有 © 2017 Cees-Jan Kiewiet

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人,免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向提供软件的人提供这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者都不对任何索赔、损害或其他责任负责,无论这种责任是基于合同、侵权或其他原因,无论这种责任源于、因之而起或与此软件或其使用或其他操作有关。