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 experiência em tecnologia, atuo como Engenheiro de Computação, desenvolvedor de sistemas, escritor e produtor de conteúdo. Minha trajetória passa pelo ensino técnico, desenvolvimento web, arquitetura de sistemas e criação de soluções voltadas para a indústria de jogos digitais. Acredito que conhecimento deve ser acessível e aplicável. Essa visão resultou em uma biblioteca com mais de 550 artigos gratuitos, abrangendo temas como desenvolvimento web, infraestrutura, inteligência artificial, Game Design, mercado de jogos e carreiras na indústria de games. Sou autor do livro "GDD – O Guia Definitivo", uma obra dedicada ao planejamento e documentação de jogos digitais, e criador do GameMeTRix, uma plataforma que auxilia desenvolvedores na análise e validação de ideias para jogos. Meu trabalho busca conectar planejamento, tecnologia e mercado para ajudar criadores a transformar boas ideias em projetos viáveis. Atualmente concentro meus estudos e projetos no desenvolvimento de jogos web, na criação de metodologias para validação de produtos digitais e na produção de conteúdo técnico voltado ao ecossistema de jogos. Meu compromisso é unir teoria, prática e experiência de mercado para contribuir com o crescimento de novos desenvolvedores e profissionais da área.