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

text
app/
├── Http/
│   ├── Controllers/
│   │   └── MovieController.php
│   └── Models/
│       └── Movie.php
├── routes/
│   └── web.php

🚀 Paso a Paso

1. Verificar que el servidor esté corriendo

bash
# En la carpeta de tu proyecto Laravel
php artisan serve
  • Verifica en tu navegador: http://127.0.0.1:8000

2. Crear la ruta en routes/web.php

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/movies

  • Deberí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)

bash
# En la terminal
php artisan make:controller MovieController

5. Implementar lógica en el controlador

app/Http/Controllers/MovieController.php

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

php
use App\Http\Controllers\MovieController;

Route::get('/movies', [MovieController::class, 'index']);

7. Probar nuevamente

  • Refresca: http://127.0.0.1:8000/movies

  • Deberías obtener el mismo resultado pero con mejor organización


🎨 Formateo del JSON (Opcional)

Con extensión en Chrome:

  1. Busca "JSON Formatter" en Chrome Web Store

  2. Instala la extensión

  3. Tu JSON se verá así:

json
[
    {
        "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 URLs

  • Controladores: 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 (indexshowstore, etc.)

  • Estructura MVC clara

  • Uso de Eloquent ORM


🔍 Ejemplo de respuesta esperada

json
[
    {
        "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

Entradas más populares de este blog

Axios para Principiantes - Guía Paso a Paso

15-Tutorial: Crear Película en React con useState

Tutorial de React para Principiantes