Criando Rotas e Controladores no Laravel

Laravel
Tempo de leitura: 4 minutos

Criando Rotas e Controladores no Laravel: Rotas e Controladores são os componentes fundamentais do padrão Model-View-Controller (MVC) no Laravel. Eles definem o fluxo de controle da aplicação: as Rotas capturam a intenção do usuário (a URL) e os Controladores executam a lógica de negócio correspondente, preparando a resposta.

Neste artigo, vamos aprender a mapear requisições HTTP para a lógica de negócio no Laravel 12, desde closures simples até Controllers estruturados.

1. 🎯 Rotas e Controladores: Definições

ComponenteFunçãoLocalização Padrão
Rota (Route)Mapeia uma URL e um método HTTP (GET, POST, etc.) para um destino (closure ou Controller).routes/web.php ou routes/api.php
Controlador (Controller)Recebe a requisição, interage com Models (dados) e decide qual View ou resposta retornar.app/Http/Controllers/

2. 📝 Criando Rotas: Closure vs. Controller

Toda a definição de rotas web deve ser feita no arquivo routes/web.php.

A. Rota Simples com Closure (Função Anônima)

Ideal para testes rápidos ou lógica muito simples. O closure é executado diretamente quando a rota é acessada.

PHP

// routes/web.php
use Illuminate\Support\Facades\Route;

// Rota para a raiz da aplicação (/)
Route::get('/', function () {
    return 'Bem-vindo ao Laravel!';
});
  • Route::get(): Define que a rota responde apenas a requisições HTTP GET.

B. Mapeando para um Controlador (Melhor Prática)

Para lógica de negócio complexa (que usa o banco de dados, validação, etc.), você deve sempre usar um Controlador para manter a separação de responsabilidades (MVC).

Passo 1: Gerar o Controlador (Usando Artisan)

Utilize o Artisan CLI para gerar o arquivo do controlador. O Laravel 12 o colocará em app/Http/Controllers/.

Bash

php artisan make:controller WelcomeController

Passo 2: Definir o Método no Controlador

No arquivo gerado (app/Http/Controllers/WelcomeController.php), defina o método que será executado.

PHP

<?php
// app/Http/Controllers/WelcomeController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WelcomeController extends Controller
{
    public function index()
    {
        // O Controller manipula a requisição e retorna a resposta
        return view('welcome'); // Retorna o template Blade
    }
}

Passo 3: Conectar a Rota ao Controlador

No routes/web.php, altere a rota para apontar para o Controller e seu método usando a sintaxe de array:

PHP

// routes/web.php
use App\Http\Controllers\WelcomeController;
use Illuminate\Support\Facades\Route;

// Mapeia a URL '/' para o método 'index' da classe WelcomeController
Route::get('/', [WelcomeController::class, 'index']);

3. 🌐 Métodos HTTP e Rotas

O Laravel permite mapear rotas para todos os métodos HTTP padrão, fundamentais para a arquitetura RESTful.

Método LaravelMétodo HTTPUso Comum
Route::get()GETBuscar e exibir dados (ler).
Route::post()POSTEnviar dados para criar um novo recurso (criar).
Route::put()PUTAtualizar um recurso existente (substituir).
Route::patch()PATCHAtualizar parcialmente um recurso existente (modificar).
Route::delete()DELETERemover um recurso.

4. 🔗 Rotas com Parâmetros

Muitas rotas precisam capturar segmentos da URL como variáveis (ex: o ID de um produto).

A. Parâmetros Obrigatórios

PHP

// routes/web.php
Route::get('/usuario/{id}', function (string $id) {
    return "Exibindo detalhes do usuário ID: " . $id;
});

B. Parâmetros Opcionais

Use o ponto de interrogação (?) após o nome do parâmetro e defina um valor padrão no closure ou no método do Controller.

PHP

// routes/web.php
Route::get('/posts/{slug?}', function (string $slug = 'todos') {
    return "Carregando o post: " . $slug;
});

C. Injeção de Dependência no Controller

Quando você usa um Controller, o Laravel injeta automaticamente a requisição (Request) e os parâmetros na ordem correta:

PHP

// app/Http/Controllers/PostController.php
public function show(Request $request, string $id)
{
    // A $request é injetada primeiro; o $id é o parâmetro da rota
    return view('post.show', ['id' => $id, 'metodo' => $request->method()]);
}

5. 🏷️ Otimizando: Agrupamento e Nomeação

A. Grupos de Rotas

Rotas com características comuns (como Middleware de autenticação ou prefixos de URL) devem ser agrupadas.

PHP

// routes/web.php
Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', [AdminController::class, 'index']);
    Route::post('/logout', [LoginController::class, 'logout']);
});

B. Nomeação de Rotas (->name())

Dar um nome a uma rota permite que você gere URLs dinâmicas em seu código sem depender da URL literal.

PHP

// routes/web.php
Route::get('/perfil/{id}', [UserController::class, 'show'])->name('perfil');

// Em qualquer lugar do seu código:
// Retorna a URL completa, ex: /perfil/10
$url = route('perfil', ['id' => 10]); 

✅ Conclusão Criando Rotas e Controladores no Laravel

Criando Rotas e Controladores no Laravel: Rotas e Controladores são os componentes de decisão da sua aplicação. Enquanto as Rotas definem o mapa de URLs, os Controladores contêm a lógica de negócio, seguindo a arquitetura MVC. Utilize Controllers para a maior parte da sua lógica e as convenções de métodos HTTP e agrupamento para construir uma API e interface de usuário limpa e escalável.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.