De Cero a Héroe: Crea tu Primera API REST CRUD con Spring Boot y MySQL


¿Alguna vez te has preguntado cómo las aplicaciones manejan tus datos? Cuando te registras en una web, publicas una foto o eliminas un comentario, estás interactuando con una funcionalidad CRUD: Crear, Leer, Actualizar y Eliminar (del inglés Create, Read, Update, Delete). Estas son las cuatro operaciones básicas de la persistencia de datos en cualquier sistema.

Hoy vamos a construir una API REST completamente funcional que realiza estas operaciones. Usaremos Spring Boot, un framework que simplifica enormemente el desarrollo en Java, y MySQL, una de las bases de datos relacionales más populares del mundo. ¡Prepárate para llevar tus habilidades de backend al siguiente nivel! 🚀


Paso 1: Configurando el Esqueleto del Proyecto

El primer paso es usar Spring Initializr, una herramienta web que genera la estructura base de nuestro proyecto.

  1. Ve a start.spring.io.
  2. Configura tu proyecto:
    • Project: Maven
    • Language: Java
    • Group, Artifact: Dale un nombre a tu proyecto, por ejemplo, com.tublog y api-crud.
  3. Añade las siguientes dependencias:
    • Spring Web: Fundamental para construir APIs REST y aplicaciones web.
    • Spring Data JPA: Facilita enormemente la comunicación con la base de datos a través de una capa de abstracción.
    • MySQL Driver: El conector específico que permite a nuestra aplicación "hablar" con MySQL.
    • Lombok: Una librería muy útil para reducir código repetitivo, como getters, setters y constructores.

Haz clic en "Generate", descarga el archivo .zip, descomprímelo y ábrelo con tu IDE de confianza (como IntelliJ IDEA o VS Code).

Paso 2: Conectando la Base de Datos

Ahora, vamos a crear nuestra base de datos y a decirle a Spring Boot cómo conectarse a ella.

  1. Crea la Base de Datos: Abre tu cliente de MySQL (como MySQL Workbench) y ejecuta el siguiente comando:
  2. Configura la Conexión: En tu proyecto, abre el archivo src/main/resources/application.properties y añade las siguientes líneas:
  3. Guarda y reinicia la aplicación

Paso 3: Definiendo el Modelo (la Entidad)

La Entidad es una clase de Java que representa una tabla en nuestra base de datos. Crearemos una entidad Producto.

  1. Crea un nuevo paquete llamado entity.
  2. Dentro, crea una clase Producto.java con el siguiente contenido:

Al ejecutar la aplicación, Hibernate leerá esta clase y creará automáticamente la tabla productos en tu base de datos.

Paso 4: Creando el Repositorio (Acceso a Datos)

El Repositorio es una interfaz que nos proporciona los métodos para realizar las operaciones CRUD sin tener que escribir una sola consulta SQL. ¡Así de fácil es con Spring Data JPA!
  1. Crea un nuevo paquete llamado repository.
  2. Dentro, crea una interfaz ProductoRepository.java:

Al extender de JpaRepository, nuestra interfaz hereda automáticamente métodos como findAll(), findById(), save() y deleteById().

Paso 5: Implementando la Lógica de Negocio (el Servicio)

El Servicio es donde reside la lógica de negocio. Actúa como un intermediario entre el controlador y el repositorio.

  1. Crea un nuevo paquete llamado service.
  2. Dentro, crea una clase ProductoService.java:

Paso 6: Exponiendo la API (el Controlador):

Finalmente, el Controlador expone nuestra lógica de negocio al mundo exterior a través de endpoints de API REST.
  1. Crea un nuevo paquete llamado controller.
  2. Dentro, crea una clase ProductoController.java:

¡A Probar se Dijo!

¡Y eso es todo! Ejecuta tu aplicación y usa una herramienta como Postman para probar tus endpoints:

  • GET http://localhost:8080/api/v1/productos: Obtiene todos los productos.
  • POST http://localhost:8080/api/v1/productos: Crea un nuevo producto (envía los datos en formato JSON en el cuerpo de la petición).
  • GET http://localhost:8080/api/v1/productos/1: Obtiene el producto con ID 1.
  • DELETE http://localhost:8080/api/v1/productos/1: Elimina el producto con ID 1.
¡Felicidades! Has construido una API REST CRUD completa con una arquitectura limpia y profesional. Ahora tienes una base sólida para crear aplicaciones backend mucho más complejas.

No hay comentarios.:

Publicar un comentario