# Посредники HttpSoft\Router
Классы посредников пакета HttpSoft\Router, реализующие Psr\Http\Server\MiddlewareInterface.
Все посредники содержат только один публичный метод Psr\Http\Server\MiddlewareInterface::process()
.
public function process(
Psr\Http\Message\ServerRequestInterface $request,
Psr\Http\Server\RequestHandlerInterface $handler
): Psr\Http\Message\ResponseInterface;
# HttpSoft\Router\Middleware\RouteMatchMiddleware
Используя сборщик маршрутов, сопоставляет входящий запрос с добавленными маршрутами. При совпадении регистрирует экземпляр HttpSoft\Router\Route как атрибут запроса, используя имя класса HttpSoft\Router\Route
в качестве имени атрибута, и передает запрос следующему посреднику. Если ни один маршрут не соответствует запросу, то запрос не будет модифицирован.
public function __construct(
HttpSoft\Router\RouteCollector $router,
Psr\Http\Message\ResponseFactoryInterface $responseFactory,
array $allowedMethods = ['HEAD'] // общие разрешенные методы запроса для всех маршрутов.
);
Если URI запроса соответствует одному из маршрутов, но метод запроса не соответствует методу этого маршрута, то этот посредник вернет 405
ответ вместе с заголовком Allow
, указывающим разрешенные методы маршрута.
# HttpSoft\Router\Middleware\RouteDispatchMiddleware
Проверяет наличие совпадающего маршрута (экземпляра HttpSoft\Router\Route) в качестве атрибута в запросе. Если он существует, то используется обработчик этого маршрута, иначе обработка запроса делегируется обработчику, который передается аргументом в метод process()
.
public function __construct(HttpSoft\Runner\MiddlewareResolverInterface $resolver);
Если совпадающий маршрут был передан, то для резолвинга обработчика маршрута используется экземпляр HttpSoft\Runner\MiddlewareResolverInterface из пакета HttpSoft\Runner.