Introducción
En el desarrollo de software moderno, las API RESTful se han convertido en el
estándar de comunicación entre aplicaciones. Permiten que sistemas distintos
interactúen de forma sencilla, eficiente y escalable.
Por otro lado, Spring Boot se ha
consolidado como uno de los frameworks más utilizados en el ecosistema Java
para la construcción de aplicaciones backend. Su facilidad de configuración y
la integración con el ecosistema Spring lo hacen una opción ideal para
desarrollar servicios REST.
Este artículo explica, de manera práctica, cómo construir una API RESTful básica con Spring Boot, desde la configuración inicial hasta la implementación de endpoints CRUD.
1. ¿Qué es
una API RESTful?
Una API RESTful es un servicio que sigue los
principios de REST (Representational State
Transfer), donde:
·
Los recursos se representan como endpoints (por ejemplo, /usuarios).
·
Se utilizan los métodos HTTP estándar (GET, POST, PUT, DELETE) para realizar
operaciones.
·
Los datos suelen intercambiarse en formato JSON o XML, siendo JSON el más común.
Ejemplo:
·
GET /usuarios → obtener lista de
usuarios.
·
POST /usuarios → crear un nuevo usuario.
·
PUT /usuarios/{id} → actualizar usuario
existente.
·
DELETE /usuarios/{id} → eliminar
usuario.
2.
Configuración inicial con Spring Boot
Spring Boot facilita la creación de proyectos
gracias a Spring Initializr.
1.
Accede a https://start.spring.io.
2.
Configura:
o Project: Maven.
o Language: Java.
o Spring Boot: versión estable más
reciente.
o
Dependencias: Spring
Web, Spring Data JPA, H2 Database.
3.
Descarga y descomprime el proyecto.
Esto genera la estructura base lista para iniciar el desarrollo.
3. Crear
el modelo de datos
Ejemplo: un modelo Usuario.
package com.ejemplo.api.model; import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id; @Entitypublic class Usuario { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String nombre; private String email; // Getters y Setters}
4.
Repositorio
Spring Data JPA permite acceder a la base de
datos sin escribir SQL manual.
package com.ejemplo.api.repository; import org.springframework.data.jpa.repository.JpaRepository;import com.ejemplo.api.model.Usuario; public interface UsuarioRepository extends JpaRepository<Usuario, Long> {}
5.
Controlador REST
Aquí se definen los endpoints de la API.
package com.ejemplo.api.controller; import org.springframework.web.bind.annotation.*;import java.util.List;import com.ejemplo.api.model.Usuario;import com.ejemplo.api.repository.UsuarioRepository; @RestController@RequestMapping("/usuarios")public class UsuarioController { private final UsuarioRepository repository; public UsuarioController(UsuarioRepository repository) { this.repository = repository; } @GetMapping public List<Usuario> obtenerUsuarios() { return repository.findAll(); } @PostMapping public Usuario crearUsuario(@RequestBody Usuario usuario) { return repository.save(usuario); } @GetMapping("/{id}") public Usuario obtenerUsuario(@PathVariable Long id) { return repository.findById(id).orElseThrow(); } @PutMapping("/{id}") public Usuario actualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) { Usuario u = repository.findById(id).orElseThrow(); u.setNombre(usuario.getNombre());u.setEmail(usuario.getEmail());
return repository.save(u); } @DeleteMapping("/{id}") public void eliminarUsuario(@PathVariable Long id) { repository.deleteById(id); }}
6. Probar
la API
Al ejecutar el proyecto (mvn
spring-boot:run), la API estará disponible en:
·
GET http://localhost:8080/usuarios
·
POST http://localhost:8080/usuarios
·
PUT
http://localhost:8080/usuarios/{id}
·
DELETE http://localhost:8080/usuarios/{id}
Se puede probar con herramientas como Postman o cURL.
7.
Conclusión
Spring Boot facilita enormemente la creación
de API RESTful gracias a su
simplicidad, rapidez de configuración y soporte nativo para operaciones CRUD.
A través de anotaciones simples y del poder de Spring Data JPA, es posible construir en poco tiempo un
backend robusto y escalable, ideal tanto para proyectos pequeños como para
aplicaciones empresariales.