Contenido del curso

Primer endpoint GET con Spring Boot

Resumen

Exponer datos al mundo exterior es una de las tareas centrales de un backend, y con Spring Boot puedes lograrlo en pocos minutos. Vas a aprender a construir un endpoint GET que consulta todas las películas de tu base de datos y las devuelve en formato JSON, listo para consumirse desde un navegador o desde Postman.

¿Qué es un endpoint GET y para qué sirve en una API REST?

Un backend moderno no solo guarda información, también la expone a través de servicios que responden a peticiones HTTP. Cada verbo cumple un rol distinto y conocerlos te da control sobre cómo interactúa tu aplicación con el mundo.

  • GET: para consultar datos existentes.
  • POST: para guardar nueva información.
  • DELETE: para eliminar registros.

En este caso, vas a usar GET porque tu objetivo es leer la lista completa de películas almacenadas.

¿Qué hace una petición GET? Solicita información a un servidor sin modificarla. Es la forma estándar de leer datos en una API REST.

¿Cómo se construye un MovieController en Spring Boot?

Dentro del paquete webcontroller creas una nueva clase llamada MovieController. La anotas con @RestController para que Spring identifique que esta clase expone funcionalidad a través de la API, igual que hiciste antes con HelloController [00:35].

El método que vas a definir retorna una List<MovieEntity> y se encarga de devolver todas las películas disponibles. Pero la pregunta clave es: ¿de dónde salen esos datos?

¿Cómo conectar el controlador con el CRUD?

La respuesta está en el CRUD que construiste en la clase anterior. Lo declaras como atributo final dentro del controlador, porque una vez inicializado no debe cambiar, y lo inyectas a través del constructor [01:05]. Aquí ocurre algo interesante: Spring Boot se encarga automáticamente de crear esa instancia por ti, sin que tengas que instanciar nada manualmente.

Dentro del método llamas a this.crudMovieEntity.findAll(), uno de los métodos que ofrece el CRUD para recuperar todos los registros. Como findAll() retorna un Iterable<MovieEntity>, necesitas castearlo a List<MovieEntity> para que coincida con el tipo de retorno esperado [01:35].

¿Qué hace la anotación GetMapping?

Para que Spring reconozca que este método responde a peticiones GET, lo anotas con @GetMapping("/movies"). Esa ruta es la que escribirás en el navegador o en Postman para acceder al recurso [01:55].

¿Qué es @GetMapping? Es una anotación de Spring que asocia un método de un controlador con una petición HTTP GET y una ruta específica.

¿Cómo probar el endpoint desde el navegador y Postman?

Después de reiniciar la aplicación, abres el navegador y en lugar de /hello escribes /movies. La respuesta llega en formato JSON, que es el estándar para intercambio de datos entre servicios web [02:15].

Si activas la impresión con formato estilístico, vas a ver las 10 películas de tu plataforma con todos sus campos:

  • id: la clave primaria de cada registro.
  • title: el título de la película.
  • duration: la duración.
  • genre: el género.
  • releaseDate: la fecha de estreno.
  • classification: el promedio de calificaciones recibidas en la plataforma.
  • state: el estado actual del registro.

La clasificación que ves no es un valor cualquiera, es el promedio de las calificaciones que los usuarios le han dado a esa película.

¿Cómo se consume el mismo endpoint en Postman?

En Postman creas una nueva petición tipo GET y usas exactamente la misma URL: localhost:8090/platzi-play/api/movies. Al enviar la petición, recibes la misma respuesta JSON pero presentada de forma más legible y estilizada [03:00]. Esto es útil cuando estás desarrollando, porque puedes inspeccionar headers, tiempos de respuesta y códigos de estado con mayor detalle.

¿Por qué Spring Boot crea las instancias por ti?

Aquí aparece una pregunta que vale la pena resolver: ¿quién creó la instancia de CrudMovieEntity que llega al constructor de MovieController? Tú nunca escribiste un new para crearla. Spring lo hizo por ti gracias a su sistema de inyección de dependencias, un mecanismo que mantiene tu código limpio y desacoplado.

Entender este flujo es fundamental para trabajar con Spring de forma profesional, y es exactamente lo que vas a explorar en la siguiente clase. ¿Ya tienes tu endpoint corriendo? Cuéntame en los comentarios qué resultados te devolvió tu base de datos.