¿Qué es una respuesta?
Los controladores y las rutas necesitan devolver alguna respuesta al navegador del usuario. Laravel ofrece mecanismos sencillos para devolver diversos formatos: cadenas, arrays, vistas, redirecciones, JSON, etc.Respuestas básicas
Devolver una cadena
La respuesta más simple es devolver una cadena. Laravel la convierte automáticamente en la respuesta HTTP adecuada.Devolver un array
Al devolver un array, Laravel lo convierte automáticamente a JSON.Si devuelves un modelo Eloquent o una colección directamente, también se convierten automáticamente a JSON. Es un patrón muy usado para APIs sencillas.
Devolver un modelo Eloquent
Objeto Response
Con el helperresponse() puedes devolver una respuesta detallada con código de estado HTTP y cabeceras específicas.
response() es el cuerpo y el segundo el código de estado HTTP.
Códigos de estado HTTP habituales
Respuestas con vistas
Para mostrar una plantilla Blade desde el controlador usaview().
Es la respuesta más común en aplicaciones web.
view() recibe el nombre de la vista como primer argumento y un array de datos como segundo.
response()->view() para más control
Si necesitas indicar código de estado o cabeceras, usa response()->view().
Redirecciones
Redirección básica
El helperredirect() devuelve una respuesta de redirección.
Se usa mucho para llevar al usuario a otra página tras enviar un formulario.
Redirección a ruta con nombre
Conroute() puedes indicar el destino de la redirección por el nombre de la ruta, sin escribir la URL.
Aunque la URL cambie, no hay que modificar nada; usar rutas con nombre es una buena práctica.
Volver a la página anterior
Conback() vuelves a la página donde estaba el usuario.
Muy usado tras un fallo de validación.
Redirección con mensaje flash
Conwith() puedes redirigir dejando un mensaje en la sesión.
Útil para mostrar un mensaje tras enviar un formulario con éxito.
Respuestas JSON
Para APIs, usaresponse()->json().
La cabecera Content-Type: application/json se configura automáticamente.
Devolver directamente un array o un modelo Eloquent también produce una respuesta JSON, pero
response()->json() te da control fino sobre el código de estado y las cabeceras.Cabeceras de respuesta
Conheader() añades una cabecera HTTP a la respuesta.
withHeaders().
Ejemplo práctico: elección según la acción del controlador
Ejemplo de uso de respuestas según el caso.1
Definir las rutas
2
Implementar el controlador
Próximos pasos
Validación
Aprende a validar los datos de entrada antes de devolver la respuesta.