Crea una API REST con Spring Boot

Introducción a Spring Boot para crear una aplicación web con controladores y endpoints de una API REST.

api-rest-spring-boot

Spring Boot es un framework Open Source muy popular para crear aplicaciones web y microservicios basados en la plataforma Spring. Si necesitas desarrollar una API RESTful, Spring Boot proporciona herramientas robustas y eficientes para lograrlo de manera sencilla y rápida.

Prerrequisitos

Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:

  1. Java 17 o superior: Instala JDK si aún no lo tienes.
  2. IDE IntelliJ IDEA (o Eclipse): Descarga e instala IntelliJ IDEA desde JetBrains.
  3. Maven o Gradle: Aunque Spring Boot usa Maven por defecto, también puedes usar Gradle.

Crear un nuevo proyecto Spring Boot

Para iniciar, debes generar un proyecto con Spring Boot. Puedes hacerlo manualmente o usar la herramienta Spring Initializr.

  1. Ve al sitio web Spring Initializr.

  2. Configura tu proyecto seleccionando las siguientes opciones:

    • Project: Maven.
    • Language: Java.
    • Spring Boot Version: La versión estable más reciente.
    • Group: com.example.
    • Artifact: restapi.
    • Dependencies: Selecciona las siguientes dependencias:
      • Spring Web (para desarrollar controladores RESTful).
      • Spring Boot DevTools (para recarga automática en desarrollo).
  3. Descarga el proyecto generado como un archivo .zip.

  4. Descomprime el archivo y abre el proyecto en IntelliJ IDEA.

Configurar el proyecto en IntelliJ IDEA

  1. Abre IntelliJ IDEA.
  2. Importa el proyecto como un proyecto de Maven.
  3. Asegúrate de que Maven descargue todas las dependencias necesarias.
  4. Verifica el archivo application.properties (ubicado en src/main/resources) y agrega configuraciones personalizadas si es necesario. Por ejemplo:
# Puerto del servidor
server.port=8080

Crear un controlador REST simple

Un controlador REST en Spring Boot se define mediante la anotación @RestController. Vamos a crear un controlador básico para gestionar solicitudes HTTP.

  1. Crea un paquete llamado controller en la carpeta src/main/java/com/example/restapi.
  2. Dentro del paquete, crea un archivo llamado HelloController.java:
package com.example.restapi.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/v1")
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "¡Hola desde tu primera API REST con Spring Boot!";
}
}

Este controlador expone un endpoint REST GET /api/v1/hello que devuelve un mensaje de saludo.

Ejecutar la aplicación

  1. En IntelliJ IDEA, ve al archivo RestApiApplication.java (generalmente ubicado en src/main/java/com/example/restapi) y ejecuta el método main.
  2. Abre tu navegador o usa una herramienta como Postman, o curl para acceder a tu endpoint. Ingresa la siguiente URL:
http://localhost:8080/api/v1/hello

Deberías ver el mensaje:

¡Hola desde tu primera API REST con Spring Boot!

Extender la API REST

Vamos a extender la API para que liste una lista de usuarios mediante un enpoint de tipo GET.

Agregar una entidad

Crearemos un modelo User que represente las propiedades de un usuario.

  1. Crea un paquete llamado model en src/main/java/com/example/restapi.
  2. Dentro de este paquete, crea un archivo User.java:
package com.example.restapi.model;
public class User {
private Long id;
private String name;
private String email;
// Constructores
public User(Long id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters y setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

Agregar endpoints para listar usuarios

Actualiza el controlador HelloController o crea uno nuevo para gestionar usuarios:

package com.example.restapi.controller;
import com.example.restapi.model.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@GetMapping
public List<User> getAllUsers() {
return Arrays.asList(
new User(1L, "Michael Robertson", "[email protected]"),
new User(2L, "Joseph Archibald", "[email protected]"),
new User(3L, "Rudolph Barrigan", "[email protected]")
);
}
}

Con esto, tu API REST ahora tiene un endpoint para listar usuarios:

GET http://localhost:8080/api/v1/users

Conclusión

¡Genial! ya has creado una API con Spring Boot. La funcionalidad es muy básica, pero a partir de aquí puedes ir expandiendo la API con nuevos endpoints para gestionar operaciones como creación, actualización y eliminación de datos (CRUD), integrar bases de datos reales, o añadir seguridad con Spring Security…

Para recapitular, en este artículo hemos aprendido a:

  1. Configurar un proyecto Spring Boot desde cero.
  2. Crear un controlador REST básico.
  3. Extender la API REST para gestionar datos más complejos.