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:
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:
// 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):
// 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
// Existe (aunque sea vacío)
if ($request->has('name')) {
// ...
}
// Existe y tiene valor
if ($request->filled('name')) {
// ...
}
Información de la petición
$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:
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
// 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:
-
Requestse inyecta automáticamente en controladores -
input(),all(),only()para obtener datos -
has()yfilled()verifican campos -
response()personaliza respuestas HTTP -
redirect()yback()para redirecciones
En la siguiente lección aprenderás sobre Middleware, que te permite filtrar peticiones antes de que lleguen a tus controladores.
¿Has encontrado un error o tienes una sugerencia para mejorar esta lección?
Escríbenos¿Te está gustando el curso?
Tenemos cursos premium con proyectos reales, soporte personalizado y certificado.
Descubrir cursos premium