middlewares/aura-router

用于Aura.Router的中间件

v2.0.1 2020-12-02 00:05 UTC

README

Latest Version on Packagist Software License Testing Total Downloads

用于使用 Aura.Router 并将路由处理程序存储在请求属性中的中间件。

需求

安装

此软件包可以通过 Composer 以 middlewares/aura-router 的形式安装和自动加载。

composer require middlewares/aura-router

示例

在这个示例中,我们使用 middleware/request-handler 来执行路由处理程序

//Create the router
$router = new Aura\Router\RouterContainer();

$map = $router->getMap();

$map->get('hello', '/hello/{name}', function ($request) {

    //The route parameters are stored as attributes
    $name = $request->getAttribute('name');

    //You can echo the output (it will be captured and writted into the body)
    echo sprintf('Hello %s', $name);

    //Or return a string
    return sprintf('Hello %s', $name);

    //Or return a response
    return new Response();
});

$dispatcher = new Dispatcher([
    new Middlewares\AuraRouter($router),
    new Middlewares\RequestHandler()
]);

$response = $dispatcher->dispatch(new ServerRequest('/hello/world'));

Aura.Router 允许将任何内容定义为路由处理程序(闭包、回调、操作对象、控制器类等)。中间件会将此处理程序存储在请求属性中。

用法

使用 Aura\Router\RouterContainer 实例创建中间件

$routerContainer = new Aura\Router\RouterContainer();

$route = new Middlewares\AuraRouter($routerContainer);

可选地,您可以将 Psr\Http\Message\ResponseFactoryInterface 作为第二个参数提供,它将用于创建错误响应(404405406)。如果没有定义,将自动使用 Middleware\Utils\Factory

$routerContainer = new Aura\Router\RouterContainer();
$responseFactory = new MyOwnResponseFactory();

$route = new Middlewares\AuraRouter($routerContainer, $responseFactory);

属性

用于保存处理程序的服务器请求属性名称。默认值是 request-handler

$dispatcher = new Dispatcher([
    //Save the route handler in an attribute called "route"
    (new Middlewares\AuraRouter($routerContainer))->attribute('route'),

    //Execute the route handler
    (new Middlewares\RequestHandler())->attribute('route')
]);

有关最近更改的更多信息,请参阅 CHANGELOG,有关贡献的详细信息,请参阅 CONTRIBUTING

MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE