LaravelPHPProgramação

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 IlluminateSupportFacadesRoute;

Route::get('/', function () {
    return view('welcome'); // Retorna a view welcome.blade.php
});Code language: HTML, XML (xml)

 

Tipos de métodos de rota no Laravel

O Laravel oferece suporte a todos os métodos HTTP:

  • GETRoute::get() – Usado para buscar recursos.
  • POSTRoute::post() – Usado para enviar dados (geralmente em formulários).
  • PUTRoute::put() – Usado para atualizar recursos.
  • DELETERoute::delete() – Usado para deletar recursos.
  • PATCHRoute::patch() – Usado para atualizações parciais.
  • ANYRoute::any() – Responde a qualquer método HTTP.
  • MATCHRoute::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
<em>// arquivo routes/web.php</em>

use AppHttpControllersUserController;
 
Route::get('/usuario', [UserController::class, 'index']);Code language: HTML, XML (xml)

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:apiCode language: CSS (css)

Todas as rotas definidas no arquivo api.php recebem automaticamente o prefixo /api. Por exemplo:

<?php

Route::get('/usuarios', function () {
    return ['nome' => 'John Wick '];
});
Code language: HTML, XML (xml)

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";
});
Code language: PHP (php)

Ou podem ser opcionais:

Route::get('/users/{name?}', function ($name = 'Guest') {
    return "Olá, $name!";
});
Code language: PHP (php)


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');
    });
});
Code language: CSS (css)

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
Code language: PHP (php)


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']);
});
Code language: PHP (php)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *