6-GET de Todas las Películas
Descripción
En este tutorial aprenderemos a crear un endpoint GET que nos devuelva todas las películas almacenadas en nuestra base de datos, implementando buenas prácticas de separación de código.
🎯 Objetivos
Crear una ruta GET para obtener todas las películas
Implementar el patrón MVC (Modelo-Vista-Controlador)
Usar Eloquent ORM para consultas a la base de datos
Formatear la respuesta en JSON
📁 Estructura del Proyecto
app/
├── Http/
│ ├── Controllers/
│ │ └── MovieController.php
│ └── Models/
│ └── Movie.php
├── routes/
│ └── web.php🚀 Paso a Paso
1. Verificar que el servidor esté corriendo
# En la carpeta de tu proyecto Laravel
php artisan serveVerifica en tu navegador:
http://127.0.0.1:8000
2. Crear la ruta en routes/web.php
// Agrega al final del archivo
Route::get('/movies', function () {
return \App\Models\Movie::all();
});3. Probar la ruta
Ve a:
http://127.0.0.1:8000/moviesDeberías ver un JSON con todas las películas
Recomendación: Instala la extensión "JSON Formatter" en Chrome para mejor visualización
4. Crear el controlador (Mejor práctica)
# En la terminal
php artisan make:controller MovieController5. Implementar lógica en el controlador
app/Http/Controllers/MovieController.php
<?php
namespace App\Http\Controllers;
use App\Models\Movie;
use Illuminate\Http\Request;
class MovieController extends Controller
{
public function index()
{
return Movie::all();
}
}6. Actualizar la ruta para usar el controlador
routes/web.php
use App\Http\Controllers\MovieController;
Route::get('/movies', [MovieController::class, 'index']);7. Probar nuevamente
Refresca:
http://127.0.0.1:8000/moviesDeberías obtener el mismo resultado pero con mejor organización
🎨 Formateo del JSON (Opcional)
Con extensión en Chrome:
Busca "JSON Formatter" en Chrome Web Store
Instala la extensión
Tu JSON se verá así:
[
{
"id": 1,
"title": "Inception",
"year": 2010,
"created_at": "...",
"updated_at": "..."
},
{
"id": 2,
"title": "The Matrix",
"year": 1999,
"created_at": "...",
"updated_at": "..."
}
]Sin extensión:
El JSON se mostrará en una sola línea
Igualmente funcional pero menos legible
✅ Ventajas de esta implementación
Separación de responsabilidades:
Rutas (
web.php): Solo definen las URLsControladores: Contienen la lógica de negocio
Modelos: Interactúan con la base de datos
Mantenibilidad:
Fácil de modificar
Código reutilizable
Escalable para nuevas funcionalidades
Convenciones Laravel:
Nombres de métodos estándar (
index,show,store, etc.)Estructura MVC clara
Uso de Eloquent ORM
🔍 Ejemplo de respuesta esperada
[
{
"id": 1,
"title": "Inception",
"director": "Christopher Nolan",
"year": 2010,
"genre": "Sci-Fi",
"duration": 148,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
},
{
"id": 2,
"title": "The Shawshank Redemption",
"director": "Frank Darabont",
"year": 1994,
"genre": "Drama",
"duration": 142,
"created_at": "2024-01-15T10:35:00.000000Z",
"updated_at": "2024-01-15T10:35:00.000000Z"
}
]🚦 Errores comunes y soluciones
Error 404:
Verifica que la ruta esté bien escrita
Asegúrate que el servidor esté corriendo
Error "Class not found":
Verifica los namespaces
Ejecuta:
composer dump-autoload
JSON mal formateado:
Verifica que el modelo tenga datos
Revisa la conexión a la base de datos
📝 Resumen
✅ Creamos un endpoint GET para todas las películas
✅ Separamos la lógica en controladores
✅ Usamos Eloquent ORM para consultas simples
✅ Implementamos el patrón MVC
✅ Obtenemos datos en formato JSON listos para consumir desde frontend
🎥 Próximo video
En el siguiente tutorial aprenderemos a:
Crear un endpoint GET para una sola película
Pasar parámetros por URL
Implementar búsqueda por ID
🔗 Recursos adicionales
¿Listo para continuar? En el próximo video implementaremos el GET de una sola película usando parámetros en la URL. ¡Nos vemos allá!
Comentarios
Publicar un comentario