Laravel - O básico sobre rotas
O que são rotas
Rotas são responsáveis por direcionar requisições HTTP para ações específicas dentro da aplicação. Elas atuam como o mapeamento entre uma URL e a lógica correspondente que deve ser executada, como a execução de um método de um controller, o retorno de uma view ou mesmo a execução de um código diretamente.
Exemplo de uma rota, onde:
Route::get('/')
indica que a rota responde a requisições do tipo GET para a URL raiz (/
).- A função de callback retorna a view
welcome
.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome'); // Retorna a view welcome.blade.php
});
Tipos de métodos de rota no Laravel
O Laravel oferece suporte a todos os métodos HTTP:
- GET:
Route::get()
- Usado para buscar recursos. - POST:
Route::post()
- Usado para enviar dados (geralmente em formulários). - PUT:
Route::put()
- Usado para atualizar recursos. - DELETE:
Route::delete()
- Usado para deletar recursos. - PATCH:
Route::patch()
- Usado para atualizações parciais. - ANY:
Route::any()
- Responde a qualquer método HTTP. - MATCH:
Route::match(['get', 'post'], ...)
- Responde apenas aos métodos HTTP especificados.
Arquivos padrão de rotas
Dentro da pasta /routes estãos os arquivos que vão conter as rotas da aplicação. O arquivo routes/web.php
armazena as rotas que são acessadas pelo navegador do usuário. Todas as rotas incluídas nesse arquivo, por padrão, fazem uso de um grupo de middleware
que provê serviços de controle de estado da sessão
e CSRF
(Cross-site Request Forgery - é um tipo de ataque de websites maliciosos).
Abaixo foi adicionado um exemplo de rota mapeada para o endereço "http://enderecodoapp.com.br/usuario":
<?php
// arquivo routes/web.php
use App\Http\Controllers\UserController;
Route::get('/usuario', [UserController::class, 'index']);
Rotas de API
O arquivo routes/api.php
é usado para definir rotas específicas para APIs. Para habilitar esse recurso, use o comando install:api
php artisan install:api
Todas as rotas definidas no arquivo api.php
recebem automaticamente o prefixo /api
. Por exemplo:
<?php
Route::get('/usuarios', function () {
return ['nome' => 'John Wick '];
});
Essa rota estará disponível em "/api/usuarios
".
Parâmetros nas rotas
As rotas podem conter parâmetros dinâmicos:
Route::get('/users/{id}', function ($id) {
return "Usuário com ID: $id";
});
Ou podem ser opcionais:
Route::get('/users/{name?}', function ($name = 'Guest') {
return "Olá, $name!";
});
Middlewares nas rotas
Middlewares podem ser aplicados para executar ações antes ou depois de atender a rota:
Route::middleware('auth')->group(function () {
Route::get('/dashboard', function () {
return view('dashboard');
});
});
Podem ser usados para:
-
Autenticação: Verificar se o usuário está autenticado antes de acessar determinada rota.
-
Autorização: Garantir que o usuário tem permissão para executar uma ação ou acessar um recurso.
-
Throttle (limitação de requisições): Limitar o número de requisições feitas por um cliente em um intervalo de tempo.
-
Manipulação de cabeçalhos: Adicionar ou modificar cabeçalhos HTTP em requisições ou respostas.
-
Registro de logs: Registrar as informações das requisições e respostas para auditoria.
Rota nomeada
Rotas podem ter nomes para facilitar o redirecionamento:
Route::get('/profile', [UserController::class, 'profile'])->name('profile');
return redirect()->route('profile'); // Redireciona para /profile
Agrupamento de rotas
Rotas podem ser agrupadas para compartilhar características, como middlewares ou prefixos:
Route::prefix('admin')->middleware('auth')->group(function () {
Route::get('/users', [AdminController::class, 'users']);
Route::get('/settings', [AdminController::class, 'settings']);
});
Essas foram algumas informações básicas e resumidas sobre rotas. Para mais detalhes, consulte a documentação no link: https://laravel.com/docs/11.x/routing#basic-routing