Cómo escribir una API REST en Java en 30 minutos: guía paso a paso
Crear una API REST es una de las habilidades clave del desarrollador Java moderno. REST (Representational State Transfer) permite construir servicios web ligeros, escalables y comprensibles. En esta guía crearemos en 30 minutos una API REST completa con Spring Boot. Aprenderás a configurar el proyecto, crear endpoints para trabajar con usuarios, manejar JSON y probar la API a través de Postman o el navegador.
1. ¿Qué es una API REST y para qué sirve?
Una API REST es un estilo arquitectónico en el que el cliente y el servidor intercambian datos a través de solicitudes HTTP. Los principios básicos de REST son:
- Recursos — cada objeto (usuario, producto, pedido) está representado por una URL.
- Métodos HTTP — GET (lectura), POST (creación), PUT (actualización), DELETE (eliminación).
- Stateless — cada solicitud contiene toda la información necesaria; el servidor no almacena el estado de la sesión.
- Formatos de datos — generalmente JSON o XML.
La API REST se utiliza en aplicaciones móviles, frontends web, microservicios e integración de sistemas. En Java, el framework más popular para crear API REST es Spring Boot, que proporciona anotaciones listas y configuración automática.
2. Preparación del proyecto Spring Boot
Para empezar necesitarás:
- JDK 17 o superior
- IntelliJ IDEA o cualquier otro IDE
- Maven o Gradle
Crearemos un proyecto usando Spring Initializr. Selecciona:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0 (o la última estable)
- Dependencies: Spring Web, Spring Boot DevTools
Haz clic en "Generate" y descomprime el archivo. Abre el proyecto en el IDE. La estructura se verá así:
rest-api-demo/├── src/main/java/com/example/restapidemo/│ ├── RestApiDemoApplication.java│ └── controller/│ └── UserController.java├── src/main/resources/│ └── application.properties└── pom.xml3. Creación del modelo de datos y el controlador
Crearemos un modelo simple User (clase en el paquete model):
package com.example.restapidemo.model;
public class User { private Long id; private String name; private String email;
public User() {}
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; }}Ahora crearemos el controlador UserController en el paquete controller. Este es el corazón de nuestra API:
package com.example.restapidemo.controller;
import com.example.restapidemo.model.User;import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;
@RestController@RequestMapping("/api/users")public class UserController {
private final List<User> users = new ArrayList<>(); private final AtomicLong counter = new AtomicLong();
public UserController() { // Datos de prueba users.add(new User(counter.incrementAndGet(), "Alice", "alice@example.com")); users.add(new User(counter.incrementAndGet(), "Bob", "bob@example.com")); }
// GET /api/users — obtener todos los usuarios @GetMapping public List<
```