Responses

Intermedio
Laravel
Laravel
Actualizado: 24/09/2025

Introducción a responses

Los responses o respuestas HTTP son uno de los componentes fundamentales en Laravel para devolver contenido al cliente después de procesar una solicitud. Cuando un usuario accede a una ruta de tu aplicación, Laravel debe generar y enviar una respuesta apropiada que puede contener HTML, JSON, archivos o cualquier otro tipo de contenido.

En Laravel, cada controlador y closure de ruta debe devolver una respuesta. El framework proporciona múltiples formas de generar estas respuestas, desde las más simples hasta las más elaboradas, permitiendo un control granular sobre los headers, códigos de estado y el contenido que se envía al cliente.

Tipos básicos de respuestas

Laravel permite crear respuestas de diferentes maneras según las necesidades de tu aplicación. La forma más simple es devolver una cadena de texto directamente desde una ruta o controlador:

Route::get('/saludo', function () {
    return 'Hola desde Laravel';
});

También puedes devolver arrays que se convierten automáticamente en JSON, lo cual es especialmente útil para APIs:

Route::get('/usuario', function () {
    return [
        'nombre' => 'Juan',
        'email' => 'juan@ejemplo.com',
        'activo' => true
    ];
});

El helper response()

Para un control más preciso sobre las respuestas, Laravel proporciona el helper response() que permite especificar códigos de estado HTTP, headers personalizados y otros parámetros:

Route::get('/api/datos', function () {
    return response([
        'mensaje' => 'Datos obtenidos correctamente',
        'datos' => ['elemento1', 'elemento2']
    ], 200);
});

Puedes agregar headers personalizados usando el método header():

Route::get('/descarga', function () {
    return response('Contenido del archivo', 200)
        ->header('Content-Type', 'text/plain')
        ->header('X-Custom-Header', 'MiValor');
});

Respuestas JSON

Para aplicaciones API, Laravel facilita la creación de respuestas JSON con el método json():

Route::get('/api/productos', function () {
    $productos = [
        ['id' => 1, 'nombre' => 'Laptop'],
        ['id' => 2, 'nombre' => 'Mouse']
    ];
    
    return response()->json($productos);
});

También puedes especificar el código de estado y headers adicionales:

Route::post('/api/producto', function () {
    // Lógica para crear producto
    
    return response()->json([
        'mensaje' => 'Producto creado exitosamente',
        'producto_id' => 123
    ], 201);
});

Redirecciones

Las redirecciones son un tipo especial de respuesta que indica al navegador que debe solicitar una URL diferente. Laravel proporciona varios métodos para crear redirecciones:

Route::get('/antigua-ruta', function () {
    return redirect('/nueva-ruta');
});

Puedes redirigir a rutas con nombre usando el método route():

Route::get('/panel', function () {
    return redirect()->route('dashboard');
});

Para redirecciones temporales con datos de sesión flash, usa el método with():

Route::post('/formulario', function () {
    // Procesar formulario
    
    return redirect()->back()
        ->with('mensaje', 'Formulario enviado correctamente');
});

Respuestas de archivos

Laravel facilita el envío de archivos como respuesta, ya sea para mostrarlos en el navegador o forzar su descarga:

Route::get('/imagen/{id}', function ($id) {
    $rutaImagen = storage_path("app/imagenes/{$id}.jpg");
    
    return response()->file($rutaImagen);
});

Para forzar la descarga de un archivo:

Route::get('/descargar/{archivo}', function ($archivo) {
    $rutaArchivo = storage_path("app/documentos/{$archivo}.pdf");
    
    return response()->download($rutaArchivo, 'documento.pdf');
});

Códigos de estado HTTP

Es fundamental usar los códigos de estado HTTP apropiados para comunicar correctamente el resultado de cada operación:

// Éxito (200)
return response()->json(['datos' => $datos], 200);

// Creado (201)
return response()->json(['id' => $nuevoId], 201);

// No encontrado (404)
return response()->json(['error' => 'Recurso no encontrado'], 404);

// Error del servidor (500)
return response()->json(['error' => 'Error interno'], 500);

Responses desde controladores

En los controladores, el manejo de respuestas sigue los mismos principios, pero organizados dentro de métodos específicos:

<?php

namespace App\Http\Controllers;

class ProductoController extends Controller
{
    public function show($id)
    {
        $producto = Producto::find($id);
        
        if (!$producto) {
            return response()->json([
                'error' => 'Producto no encontrado'
            ], 404);
        }
        
        return response()->json($producto);
    }
    
    public function create()
    {
        return response()->json([
            'mensaje' => 'Formulario de creación listo'
        ]);
    }
}

Este sistema de respuestas en Laravel proporciona la flexibilidad necesaria para manejar diferentes tipos de contenido y situaciones, desde simples páginas web hasta complejas APIs REST, manteniendo siempre un código limpio y expresivo.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en Laravel

Documentación oficial de Laravel
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Laravel es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Laravel

Explora más contenido relacionado con Laravel y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  • Comprender qué son las respuestas HTTP y su importancia en Laravel.
  • Aprender a devolver diferentes tipos de respuestas: texto, JSON, archivos y redirecciones.
  • Utilizar el helper response() para controlar códigos de estado y headers personalizados.
  • Implementar respuestas JSON adecuadas para APIs REST.
  • Gestionar respuestas desde controladores siguiendo buenas prácticas.