api-clients/middleware

4.0.0 2017-06-28 19:24 UTC

README

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

这个库包含了在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

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

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

软件按“原样”提供,不提供任何类型的保证,无论是明示的、暗示的还是其他的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他原因引起的,无论是在软件或其使用或其他情况下产生的。