api-clients / middleware
请求中间件
4.0.0
2017-06-28 19:24 UTC
Requires
- php: ^7.0
- doctrine/annotations: ^1.4
- psr/http-message: ^1.0
- react/promise: ^2.4
- wyrihaximus/doctrine-annotation-autoloader: ^1.0
Requires (Dev)
- api-clients/test-utilities: ^4.1
- guzzlehttp/psr7: ^1.3
- psr/container: ^1.0
Suggests
- api-clients/middleware-cache: Cache requests with different strategies
- api-clients/middleware-log: Log requests and their context
- api-clients/middleware-oauth1: Sign requests with oauth1
- api-clients/middleware-pool: Pool the maximum concurrent requests
- psr/container: Add a ContainerInterface implementation to use the ContainerLocator
This package is auto-updated.
Last update: 2024-09-15 04:15:47 UTC
README
这个库包含了在API客户端中使用的异步MiddlewareRunner
。它提供了一个所有中间件的接口。中间件按照添加到MiddlewareRunner
时的优先级排序。具有相同优先级的中间件的顺序没有保证。
提供了一些特性,以方便您使用,如果您的中间件实现不需要在MiddlewareInterface
中定义的所有方法。
定位器
定位器可以被您的应用程序用来获取中间件实例。它将检查创建的实例是否实现了MiddlewareInterface
。目前提供的唯一定位器是ContainerLocator
,它接受一个Psr\Container\ContainerInterface
来获取您的中间件实例。
示例
$container = /* ... */; $locator = new ContainerLocator($container); $middlewares = []; $config = [ 'middlewares' => [/*...*/] 'options' => [/*...*/] ]; foreach ($config['middlewares'] as $middleware) { $middlewares[] = $locator->get($middleware); } $runner = new MiddlewareRunner($config['options'], $middelwares); $runner->pre($request)->then(function ($request) use ($options) { return resolve($this->browser->send( $request )); }, function (ResponseInterface $response) { return resolve($response); })->then(function (ResponseInterface $response) use ($runner) { return $runner->post($response); })->otherwise(function (Throwable $throwable) use ($runner) { return reject($runner->error($throwable)); });
许可证
MIT许可证(MIT)
版权所有(c)2017 Cees-Jan Kiewiet
特此授予任何获得此软件及其相关文档副本(“软件”)的人免费权利,不受限制地使用该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供副本的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何类型的保证,无论是明示的、暗示的还是其他的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他原因引起的,无论是在软件或其使用或其他情况下产生的。