diff --git a/src/OnRequest.php b/src/OnRequest.php index fb1a92d..939305f 100644 --- a/src/OnRequest.php +++ b/src/OnRequest.php @@ -17,6 +17,7 @@ use Kiri\Router\Interface\OnRequestInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; use Swoole\Http\Request; use Swoole\Http\Response; use Throwable; diff --git a/src/RouterCollector.php b/src/RouterCollector.php index 227984e..d3081a6 100644 --- a/src/RouterCollector.php +++ b/src/RouterCollector.php @@ -289,7 +289,23 @@ class RouterCollector implements \ArrayAccess, \IteratorAggregate */ public function query(string $path, string $method): HttpRequestHandler { - return $this->httpHandler[$method . '_' . $path] ?? new HttpRequestHandler([], $this->found); + return $this->httpHandler[$method . '_' . $path] ?? $this->not_found_handler(); + } + + + /** + * @return HttpRequestHandler + */ + protected function not_found_handler(): HttpRequestHandler + { + $middlewares = \config('servers.request.middlewares', []); + if (!is_array($middlewares) || count($middlewares) < 1) { + return new HttpRequestHandler($middlewares, $this->found); + } + for ($index = 0; $index < count($middlewares); $index++) { + $middlewares[$index] = \Kiri::getDi()->get($middlewares[$index]); + } + return new HttpRequestHandler($middlewares, $this->found); }