Introducción: REST API en Java es más fácil de lo que parece
El desarrollo de REST API es una de las habilidades más demandadas en el desarrollo backend moderno. Java, gracias a su fiabilidad y enorme ecosistema, sigue siendo líder para la creación de API industriales. Muchos principiantes piensan que escribir una REST API en Java es difícil y lleva mucho tiempo. En realidad, con la herramienta adecuada (Spring Boot) puedes crear un servicio funcional en 30 minutos.
En este artículo, analizaremos en la práctica cómo crear rápidamente una REST API completa en Java. Escribiremos una pequeña aplicación para gestionar una lista de libros, que soporte las operaciones CRUD estándar: creación, lectura, actualización y eliminación de registros. Todo el código estará listo para ejecutarse, y podrás probarlo a través de Postman o el navegador.
1. Preparación del proyecto y configuración de Spring Boot
La forma más rápida de crear un proyecto es usar Spring Initializr. Es el generador oficial que crea un esqueleto de proyecto con las dependencias necesarias.
1.1. Generación del proyecto
Ve a start.spring.io y selecciona:
- Project: Maven (o Gradle)
- Language: Java
- Spring Boot: última versión estable (por ejemplo, 3.2.x)
- Group: com.example
- Artifact: bookapi
Añade las dependencias:
Spring Web— para crear controladores RESTSpring Data JPA— para trabajar con la base de datosH2 Database— base de datos embebida para pruebas
Haz clic en "Generate", descarga el archivo y descomprímelo. Abre el proyecto en IntelliJ IDEA o cualquier otro IDE.
1.2. Estructura del proyecto
Después de abrir el proyecto, verás la siguiente estructura:
bookapi/├── src/│ ├── main/│ │ ├── java/com/example/bookapi/│ │ │ ├── BookapiApplication.java│ │ │ ├── controller/│ │ │ ├── model/│ │ │ └── repository/│ │ └── resources/│ │ └── application.properties│ └── test/└── pom.xmlCrea los paquetes controller, model y repository manualmente; esto facilitará la navegación.
2. Creación del modelo de datos y del repositorio
Empecemos con el modelo: la clase que describe la entidad "Libro".
2.1. Clase Book (Model)
Crea el archivo Book.java en el paquete model:
package com.example.bookapi.model;
import jakarta.persistence.*;
@Entity@Table(name = "books")public class Book {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@Column(nullable = false) private String title;
@Column(nullable = false) private String author;
private int year;
public Book() {}
public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; }
// Getters y Setters public Long getId() { return id; } public void setId(Long id) { this.id = id; }
public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }
public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; }
public int getYear() { return year; } public void setYear(int year) { this.year = year; }}2.2. Repositorio (Repository)
Crea la interfaz BookRepository.java en el paquete repository:
package com.example.bookapi.repository;
import com.example.bookapi.model.Book;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;
import java.util.L