From 16391b387d0b52268efc15c75ea3b9f835744ef0 Mon Sep 17 00:00:00 2001 From: lukibeg Date: Fri, 17 Oct 2025 13:29:07 -0300 Subject: [PATCH] UPDATE: Fix methods of return. --- core/Router.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/core/Router.php b/core/Router.php index e516b7b..da4ce59 100644 --- a/core/Router.php +++ b/core/Router.php @@ -8,6 +8,7 @@ use Nyholm\Psr7\Response; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use App\Controllers\ReportController; +use Nyholm\Psr7Server\ServerRequestCreatorInterface; class Router { @@ -30,12 +31,18 @@ class Router return $this->routes; } + public function getQueryParams(ServerRequestInterface $serverRequest) + { + return $serverRequest->getQueryParams(); + } + public function checkIfRouteExists($uri, $method, $controller, $action) {} public function dispatcher(ServerRequestInterface $request) { $uri = $request->getUri()->getPath(); $method = $request->getMethod(); + $queryParams = $this->getQueryParams($request); foreach ($this->routes as $route) { // Converte a URI da rota para um padrão RegEx para capturar parâmetros @@ -48,7 +55,7 @@ class Router // Se a URI bateu, agora verifica o método HTTP if ($method !== $route['method']) { // URI correta, método errado -> Erro 405 - return new Response(405, ['Allow' => $route['method']], 'Method Not Allowed'); + return new Response(405, ['Allow' => $route['method'], 'Content-Type' => 'application/json'], json_encode(['error' => 'Recurso não foi encontrado'])); } // Remove o primeiro elemento de $matches, que é a URI completa @@ -61,19 +68,22 @@ class Router // Verifica se a classe do controller existe if (!class_exists($controllerClass)) { - return new Response(500, [], 'Controller not found'); + return new Response(500, ['Content-Type' => 'application/json', 'Accept' => 'application/json'], json_encode(['error' => 'Recurso não foi encontrado'])); } $controllerInstance = new $controllerClass(); + if (empty($queryParams)) { + return new Response(403, ['Content-Type' => 'application/json', 'Accept' => 'application/json'], json_encode(['error' => 'O parâmetro de data não foi enviado.'])); + } // Chama a action e passa a requisição e os parâmetros // Ex: $meuController->show($request, '123'); - return $controllerInstance->$action($request, ...$params); + return $controllerInstance->$action($request, $queryParams); } } // Se o loop terminar e nenhuma rota for encontrada -> Erro 404 - return new Response(404, [], 'Not Found'); + return new Response(404, ['Content-Type' => 'application/json'], json_encode(['error' => 'Rota inexistente'])); } }