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
| Componente | Função | Localizaçã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 Laravel | Método HTTP | Uso Comum |
Route::get() | GET | Buscar e exibir dados (ler). |
Route::post() | POST | Enviar dados para criar um novo recurso (criar). |
Route::put() | PUT | Atualizar um recurso existente (substituir). |
Route::patch() | PATCH | Atualizar parcialmente um recurso existente (modificar). |
Route::delete() | DELETE | Remover 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:
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:















