Crear endpoint POST para guardar películas en Spring Boot

Clase 16 de 23Curso de Java Spring Boot

Resumen

Crear un endpoint que permita almacenar datos desde el frontend hacia el backend es fundamental para cualquier API moderna. Aquí descubrirás cómo implementar en Spring un endpoint POST, aprovechando patrones como DTO, mapeadores automáticos y buenas prácticas para la persistencia de datos.

¿Cómo funciona el método POST en una API para guardar recursos?

El método POST permite recibir información y agregar nuevos recursos en la base de datos. Todo comienza dentro del controlador (MovieController), donde se define un método que: - Responde con un ResponseEntity<MovieDTO>. - Recibe como parámetro un objeto MovieDTO con la anotación @RequestBody para indicar que los datos llegan en el cuerpo de la petición. - Se anota con @PostMapping para asociar la ruta y el verbo HTTP.

Esto habilita la ruta /movies para guardar películas nuevas usando solicitudes POST con datos en formato JSON.

¿Qué pasos hay que seguir para transformar y guardar los datos recibidos?

Para persistir la información recibida es fundamental preparar todos los componentes: - El repositorio (CrudMovieEntity) ofrece un método save que requiere una entidad (MovieEntity), no un DTO. - Por ello, es necesario crear en el mapper (MovieMapper) una función toEntity, usando @InheritInverseConfiguration de MapStruct, que convierte un MovieDTO en una entidad lista para guardar. - El campo especial genre necesita un mapeo adicional usando qualifiedByName, ajustando de stringToGenre a genreToString según el sentido de la conversión. - Para asignar el estado por defecto al guardar, se establece manualmente como 'Disponible'. El campo ID no se debe definir, ya que la base de datos lo genera automáticamente.

Después de guardar la entidad, el resultado se transforma nuevamente a DTO para devolverlo al cliente.

¿Cuál es la forma correcta de responder una creación exitosa?

Es una buena práctica responder con el estado HTTP correcto cuando se crea un recurso. Aplicando Spring, puedes hacer esto así: - Utilizar ResponseEntity.status(HttpStatus.CREATED) para indicar que se creó algo nuevo. - El cuerpo de la respuesta es el DTO que representa la película efectivamente guardada. - No es indispensable retornar una URI específica si no está disponible: el enfoque flexible muestra cómo elegir entre soluciones y adaptarlas al flujo deseado.

¿Cómo probar el endpoint POST y visualizar los resultados?

Para probar el endpoint, se recomienda emplear herramientas como Postman, ya que los navegadores no permiten enviar cuerpos en solicitudes POST de forma sencilla. Los pasos para realizar la prueba serían: - Enviar una solicitud POST a la ruta api/movies, indicando los campos de la película en JSON (example: título, duración, género, año de lanzamiento y rating). - Al recibir la respuesta con HTTP 201 Created y el nuevo ID, puedes consultar dicha película con un GET y corroborar que fue agregada correctamente. - También es posible recuperar el listado de todas las películas y verificar que la nueva se encuentra al final del listado.

¿Has probado ya crear endpoints similares? Comparte tus experiencias y dudas para seguir creciendo juntos.