Lección 8 de 45 10 min de lectura

Request y Response

Cada petición HTTP que llega a tu aplicación se convierte en un objeto Request. De la misma forma, puedes personalizar las respuestas usando el objeto Response.

El objeto Request

Laravel inyecta automáticamente el objeto Request en tus controladores. Solo tienes que añadirlo como parámetro:

php
use Illuminate\Http\Request;

public function store(Request $request): string
{
    $name = $request->input('name');
    return "Hola, $name";
}

Obtener datos de la petición

Hay varias formas de acceder a los datos enviados:

php
// Un campo específico
$email = $request->input('email');

// Con valor por defecto
$role = $request->input('role', 'user');

// Todos los datos
$data = $request->all();

// Solo algunos campos
$data = $request->only(['name', 'email']);

// Todos excepto algunos
$data = $request->except(['password']);

Query string

Para obtener solo parámetros de la URL (query string):

php
// URL: /productos?page=2&sort=name
$page = $request->query('page');  // '2'
$sort = $request->query('sort');  // 'name'

// Con valor por defecto
$page = $request->query('page', 1);

input() obtiene datos de cualquier fuente (query string, body, JSON), mientras que query() solo de la URL.

Verificar si existe un campo

php
// Existe (aunque sea vacío)
if ($request->has('name')) {
    // ...
}

// Existe y tiene valor
if ($request->filled('name')) {
    // ...
}

Información de la petición

php
$request->path();      // 'usuarios/1'
$request->url();       // 'http://ejemplo.com/usuarios/1'
$request->method();    // 'GET', 'POST', etc.
$request->ip();        // IP del cliente
$request->header('Accept');  // Headers

Respuestas personalizadas

Puedes devolver distintos tipos de respuestas:

php
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;

// Respuesta con código de estado
return response('No encontrado', 404);

// JSON
return response()->json(['status' => 'ok']);

// Con headers personalizados
return response('Contenido')
    ->header('Content-Type', 'text/plain');

Redirecciones

php
// A una URL
return redirect('/dashboard');

// A la página anterior
return back();

// Con mensaje flash
return redirect('/login')->with('error', 'Credenciales inválidas');

Ejercicios

Ejercicio 1: Obtener datos de formulario

Crea un método store que reciba name y email del request y devuelva un JSON con ambos valores.

Ver solución
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;

public function store(Request $request): JsonResponse
{
    $data = $request->only(['name', 'email']);

    return response()->json($data);
}

Ejercicio 2: Respuesta condicional

Crea un método que devuelva JSON si el header Accept contiene "application/json", o texto plano en caso contrario.

Ver solución
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;

public function show(Request $request): Response|JsonResponse
{
    $data = ['message' => 'Hola mundo'];

    if ($request->header('Accept') === 'application/json') {
        return response()->json($data);
    }

    return response($data['message']);
}

Ejercicio 3: Validar campo requerido

Crea un método que verifique si el campo email está presente y tiene valor. Si no, redirige a /form con un mensaje de error.

Ver solución
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;

public function process(Request $request): string|RedirectResponse
{
    if (!$request->filled('email')) {
        return redirect('/form')->with('error', 'Email es requerido');
    }

    return 'Procesado correctamente';
}

Resumen

En esta lección aprendiste:

  • Request se inyecta automáticamente en controladores
  • input(), all(), only() para obtener datos
  • has() y filled() verifican campos
  • response() personaliza respuestas HTTP
  • redirect() y back() para redirecciones

En la siguiente lección aprenderás sobre Middleware, que te permite filtrar peticiones antes de que lleguen a tus controladores.

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales, soporte personalizado y certificado.

Descubrir cursos premium