Controllers
Toda requisição recebida na rota deve (ou deveria) passar por um controller para que enfim retorne ao usuário os dados solicitados ou a view necessária, sendo assim os controllers devem ser criados para tratar a requisição corretamente.
É possÃvel cria-los no diretório /app/Controllers
com subpastas para um melhor controle:
namespace App\Controllers\Product;
class Product {
public static function getProduct($request, $response) {
// ...
}
}
Obtendo dados da requisição
Os dados da requisição, como headers, parâmetros query, variáveis post, parâmetros de url, uri e método http podem ser obtidos com a variável $request
:
$request->header(); // Obter parâmetros do header
$request->query(); // Obter parâmetros da query
$request->body(); // Obter parâmetros do corpo
$request->param(); // Obter parâmetros da URL
$request->getUri(); // Obter URI
$request->getHttpMethod(); // Obter método HTTP
Respondendo a requisição
Toda requisição espera uma resposta, sendo ela problemática ou não, por isso é necessário que todo controller possua um return $res->send()
com informações da resposta:
namespace App\Controllers\Product;
class Product {
public static function getProduct($request, $response) {
$return->send(200, "Sucesso");
}
}
Os status (200 no exemplo) da resposta deve seguir os padrões de status http listados aqui.
Padrão de retorno
O padrão de retorno pode ser definido na configuração no arquivo .env
e é pré-definida para o formato text/html
mas pode ser modificado dependendo de como for necessário:
public static function getProduct($request, $response) {
// ...
$return->send(200, ["data" => "Sucesso"], "application/json");
}
É possÃvel também utilizar alias para o retorno da requisição em HTML ou JSON:
$res->send(200, $content, 'json'); // Ao invés de 'application/json'
$res->send(200, $content, 'html'); // Ao invés de 'text/html'
Last updated