ajgarlag/psr15-router

组件用于通过PSR-15中间件路由PSR-7请求

0.5.3 2023-08-24 11:27 UTC

This package is auto-updated.

Last update: 2024-08-24 13:27:06 UTC


README

Psr15 Router组件允许您通过PSR-15中间件路由PSR-7请求。

Build Status Latest Stable Version Latest Unstable Version Total Downloads Montly Downloads Daily Downloads License

安装

要安装此组件的最新稳定版本,请在控制台打开并执行以下命令

$ composer require ajgarlag/psr15-router

用法

您可以选择是否通过MiddlewareInterfaceRequestHandlerInterface来路由请求

中间件路由

使用此选项,您需要构建一个Router来区分哪个中间件将处理请求。然后构建RouterMiddleware来处理请求

use Ajgarlag\Psr15\Router\Matcher\UriRegexRequestMatcher;
use Ajgarlag\Psr15\Router\Middleware\Route;
use Ajgarlag\Psr15\Router\Middleware\ArrayRouter;
use Ajgarlag\Psr15\Router\Middleware\RouterMiddleware;

$userMiddleware; //Some middleware to process user requests
$userRoute = new Route(
    new UriRegexRequestMatcher('^http(s)?://example.org/user/'),
    $userMiddleware
);
$adminMiddleware; //Some middleware to process admin requests
$adminRoute = new Route(
    new UriRegexRequestMatcher('^http(s)?://example.org/admin/'),
    $adminMiddleware
);

$router = new ArrayRouter();
$router->addRoute($userRoute);
$router->addRoute($adminRoute);

$routerMiddleware = new RouterMiddleware($router);

$response = $routerMiddleware->process($request, $requestHandler);

如果路由器没有返回任何中间件来处理请求,则直接通过请求处理器处理。

请求处理器路由

使用此选项,您需要构建一个Router来区分哪个请求处理器将处理请求。然后构建RouterRequestHandler来处理请求。如果路由器无法路由请求,则需要一个故障转移请求处理器来处理请求。通常,这个故障转移请求处理器应该返回一个404响应。

use Ajgarlag\Psr15\Router\Matcher\UriRegexRequestMatcher;
use Ajgarlag\Psr15\Router\RequestHandler\Route;
use Ajgarlag\Psr15\Router\RequestHandler\ArrayRouter;
use Ajgarlag\Psr15\Router\RequestHandler\RouterRequestHandler;

$userRequestHandler; //Some request handler to process user requests
$userRoute = new Route(
    new UriRegexRequestMatcher('^http(s)?://example.org/user/'),
    $userRequestHandler
);
$adminRequestHandler; //Some request handler to process admin requests
$adminRoute = new Route(
    new UriRegexRequestMatcher('^http(s)?://example.org/admin/'),
    $adminRequestHandler
);

$router = new ArrayRouter();
$router->addRoute($userRoute);
$router->addRoute($adminRoute);

$failoverRequestHandler; // Request handler that returns 404 unconditionally
$routerRequestHandler = new RouterRequestHandler($router, $failoverRequestHandler);

$response = $routerRequestHandler->handle($request);

许可证

此组件采用MIT许可证。有关完整的许可证信息,请参阅LICENSE文件。

报告问题或功能请求

问题和功能请求在Github问题跟踪器中跟踪。

作者信息

Antonio J. García Lagar用♥开发。

如果您觉得这个组件很有用,请在GitHub仓库页面和/或Packagist软件包页面上添加一个★。