Roteamento no CodeIgniter 4: rotas explícitas e Auto Routing Improved
Defina rotas GET e POST, controladores e parâmetros no CodeIgniter 4; configure Auto Routing Improved corretamente e entenda seus limites.
O roteador associa uma URL e um método HTTP a um controlador. Rotas explícitas mostram quais ações estão disponíveis; Auto Routing Improved é uma alternativa que exige configuração deliberada. Confira a versão instalada do CodeIgniter antes de aplicar estes exemplos baseados na documentação recente.
Defina rotas explícitas
Adicione as rotas ao objeto $routes já disponível em app/Config/Routes.php. Importe Products, use GET para leitura e POST para criação. (:num) captura um segmento numérico e o passa a show. As três rotas formam um exemplo coerente; adapte nomes e permissões à aplicação.
<?php
// app/Config/Routes.php
use App\Controllers\Products;
$routes->get('products', [Products::class, 'index']);
$routes->get('products/(:num)', [Products::class, 'show']);
$routes->post('products', [Products::class, 'create']);
Crie o controlador
Crie app/Controllers/Products.php com o namespace App\Controllers. Métodos públicos associados às rotas retornam respostas; helperMethod é protegido e não é uma ação exposta. O exemplo retorna dados fictícios: inclua validação, persistência e controle de acesso antes de criar recursos reais.
<?php
// app/Controllers/Products.php
namespace App\Controllers;
class Products extends BaseController
{
public function index(): string
{
return 'Products';
}
public function show(int $id): string
{
return 'Product ' . $id;
}
public function create()
{
return $this->response->setStatusCode(201)->setJSON(['created' => true]);
}
protected function helperMethod(): void
{
// Internal logic.
}
}
Proteja as ações
Use GET para consulta e POST para alterações. Proteja ações sensíveis com autenticação e autorização, valide as entradas e configure a proteção CSRF dos formulários conforme a aplicação. Definir uma rota não garante, por si só, a segurança do controlador.
Auto Routing Improved como alternativa
Ative $autoRoute=true em app/Config/Routing.php e $autoRoutesImproved=true em app/Config/Feature.php. Métodos acessíveis usam prefixo do verbo HTTP: getHello() pode responder a GET /hello-world/hello no controlador HelloWorld. A rota padrão para Home::index pode impedir roteamento automático em /; remova-a se a raiz também deve ser resolvida automaticamente. Os trechos a seguir pertencem a arquivos diferentes e ilustram outra modalidade; confira as prioridades antes de combiná-la com as rotas explícitas do exemplo.
// app/Config/Routing.php
public bool $autoRoute = true;
// app/Config/Feature.php
public bool $autoRoutesImproved = true;
// Example auto-routed method: GET /hello-world/hello
public function getHello(): string { return 'Hello'; }
Nomes, segmentos e limites
A associação entre segmentos da URL, controladores e métodos segue as regras da versão instalada. Prefira rotas explícitas para URLs públicas estáveis ou controle preciso de métodos e filtros. Evite expor por engano métodos públicos ou ações administrativas.
Confira as rotas
Execute php spark routes para inspecionar as rotas registradas e teste solicitações GET e POST permitidas e bloqueadas. Confira respostas 404/405, ordem e filtros. Rotas descobertas dinamicamente podem não constar da lista de rotas explícitas.
php spark routes
Fontes oficiais
Rotas: https://codeigniter4.github.io/CodeIgniter4/incoming/routing.html ; Auto Routing Improved: https://codeigniter4.github.io/CodeIgniter4/incoming/auto_routing_improved.html ; controladores: https://codeigniter4.github.io/CodeIgniter4/incoming/controllers.html .
Partilhar
Qual é a sua reação?
Gosto
0
Não gosto
0
Adoro
0
Divertido
0
Irritado
0
Triste
0
Uau
0