En este post te mostraré cómo crear una API REST usando el lenguaje de programación Java, el framework Spring Boot y la base de datos MySQL. Va a ser un proyecto simple pero a partir del mismo vas a poder crear más endpoints o rutas para consumir distintos modelos.

API REST en Spring Boot con MySQL

Lo que tendremos al final será un proyecto sencillo que expone una API REST con los métodos HTTP GET, POST, PUT y DELETE, interactuando con la base de datos en MySQL y además soportando CORS.

Por cierto, para el intercambio y consumo de datos vamos a usar JSON.

Creación del proyecto

Puedes crear un proyecto usando gradle, o usando Spring Initializr. También puedes descargar el proyecto ya terminado que te dejaré al final del post.

Dependencias

Nuestro archivo build.gradle debe tener al menos las siguientes dependencias. Obviamente no debe ser idéntico, sino parecido a:

See the gist on github.

Estamos usando spring-boot-starter-web para tener las anotaciones para poder crear la API REST, parsear automáticamente la petición a una clase de Java, etcétera.

También estamos usando JPA y el conector de MySQL para poder consumir datos de esta base de datos y realizar las migraciones pertinentes.

Configuración de base de datos

Recuerda que debes contar con MySQL instalado. También debes crear una base de datos que será exclusiva para el proyecto. Para esto puedes usar phpmyadmin, workbench o la terminal. Al final debes tener una base de datos vacía.

Luego, en la carpeta de resources vamos a crear un archivo llamado application.properties para configurar las credenciales. Se debe ver así, cambiando obviamente tus credenciales:

See the gist on github.

En mi caso mi base de datos se llama consumo_api; mi usuario es root y no tengo contraseña, por lo que es una cadena vacía.

Definiendo la entidad

Cada entidad será una tabla de la base de datos. En este caso vamos a definir la clase Alumno, pues la API se tratará de un CRUD de alumnos. Queda así:

See the gist on github.

Analicemos. Antes de la declaración de la clase colocamos la anotación de @Entity para indicar que será una entidad. Después definimos las propiedades de nuestra clase, en este caso necesitamos el id y el nombre.

Para el id estamos usando la anotación de @Id y de @GeneratedValue, esto es para indicar que ese es el ID a nivel de base de datos. Con esto, haremos que a partir de la entidad se genere una tabla en la base de datos.

Repositorio

En SpringBoot, un repositorio permite relacionar la entidad y la base de datos. A través del repositorio hacemos las operaciones de SELECT, UPDATE, DELETE e INSERT con los métodos findAll, save, deleteById y de nuevo save, en ese orden.

Lo bueno de todo esto es que simplemente es un interfaz que indica la Entidad, y el Id. La misma extiende de CrudRepository y queda así:

See the gist on github.

En este caso la entidad es Alumno y el tipo de dato del ID es Long.

Controlador

Finalmente el controlador se encarga de:

  1. Definir las rutas para la API
  2. En cada método, invocar al repositorio para acceder o guardar datos en la base de datos

Si te fijas, se está inyectando de manera automática gracias a la anotación @Autowired. Queda así:

See the gist on github.

Por ejemplo, para guardar un nuevo dato usamos el método POST e invocamos al método save del repositorio. En el caso de eliminar, extraemos un valor de la ruta y usamos deleteById.

También es importante mencionar que con @RequestMapping(path = "/alumnos") hacemos que todas las rutas definidas en los métodos sean relativas a /alumnos. Por lo tanto, para consumir los datos debemos acceder a /alumnos/obtener, /alumnos/crear, etcétera.

Finalmente fíjate en que estamos permitiendo CORS en la línea 8. Esto puede ser cambiado a tu gusto.

Código completo

Aquí dejo el código completo de la API, en mi repositorio de GitHub.

Recuerda que debes contar con gradle instalado. Una vez instalado simplemente ejecuta:

gradlew bootRun

Y  luego navega a localhost:8080.

Consumo de API

Puedes consumir la API con cualquier lenguaje que hable HTTP. También puedes usar Postman.

Pronto subiré un vídeo a YouTube demostrando cómo desarrollar la API y cómo consumirla con Postman. Actualización: a continuación dejo el vídeo.

Mientras tanto te recomiendo ver un sistema de ventas que hice hace algún tiempo usando este framework.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • consulta este proyecto de github se puede abrir con visual studie code que ya tiene instalado spring boot y se puede conectar a my sql, puedes hablar sobre la seguridad y despliegue de microservicios

Entradas recientes

Monitorear cola de impresión en Windows

En este artículo te voy a enseñar a monitorear la cola de impresión de una…

6 horas hace

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

4 días hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

4 días hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

4 días hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

4 días hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

1 semana hace

Esta web usa cookies.