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.

Roteamento no CodeIgniter 4: rotas explícitas e Auto Routing Improved

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 Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0