O que é Request $request em uma função no Laravel?

Em Laravel, Request $request é uma injeção de dependência que fornece acesso aos dados da requisição HTTP atual dentro de uma função (geralmente em controllers).

Para que serve?

O objeto $request serve para:

  1. Acessar dados da requisição: parâmetros GET, POST, arquivos, headers, etc.
  2. Validar dados de entrada: verificar se os dados atendem a regras específicas
  3. Manipular a requisição: adicionar/modificar dados antes do processamento

Exemplos de uso:

1. Acessando dados simples:

use Illuminate\\\\Http\\\\Request;

public function store(Request $request)
{
    $name = $request->input('name'); // Ou $request->name
    $email = $request->email;

    // Processar os dados...
}

2. Validando dados:

public function store(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8',
    ]);

    // Se chegar aqui, os dados são válidos
}

3. Acessando diferentes tipos de dados:

public function example(Request $request)
{
    // Todos os dados de entrada
    $allData = $request->all();

    // Apenas alguns campos específicos
    $someData = $request->only(['name', 'email']);

    // Todos exceto alguns campos
    $exceptData = $request->except(['password', 'token']);

    // Verificar se um campo existe
    if ($request->has('name')) {
        // Campo name existe
    }

    // Acessar arquivos enviados
    $file = $request->file('photo');
}

Tipos de Request disponíveis:

  1. Illuminate\Http\Request: A classe base com todos os métodos
  2. Requests customizados: Criados com php artisan make:request para validação específica

Vantagens: