Este es un proyecto educativo para aprender a crear servicios REST con Spring Boot y documentarlos con Swagger.
- Java 17
- Spring Boot 3.2.0
- Spring Web - para crear servicios REST
- Swagger/OpenAPI 3 - para documentación interactiva
- Lombok - para reducir código boilerplate
- Maven - para gestión de dependencias
- Descarga Java JDK 17 desde: https://adoptium.net/
- Ejecuta el instalador descargado
- Sigue el asistente de instalación (usa las opciones por defecto)
- Verifica la instalación abriendo una terminal y ejecutando:
Deberías ver algo como:
java -version
openjdk version "17.0.x"
sudo apt update
sudo apt install openjdk-17-jdk
java -versionbrew install openjdk@17
java -version- Busca "Variables de entorno" en el menú de inicio
- Haz clic en "Variables de entorno"
- En "Variables del sistema", haz clic en "Nueva"
- Nombre:
JAVA_HOME - Valor: la ruta donde instalaste Java (ej:
C:\Program Files\Eclipse Adoptium\jdk-17.0.x) - Haz clic en "Aceptar"
- Edita la variable "Path" y añade:
%JAVA_HOME%\bin
Añade al archivo ~/.bashrc o ~/.zshrc:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATHLuego ejecuta: source ~/.bashrc o source ~/.zshrc
Este proyecto incluye Maven Wrapper, por lo que no es obligatorio instalar Maven. Sin embargo, si quieres instalarlo:
- Descarga Maven desde: https://maven.apache.org/download.cgi
- Extrae el archivo zip en una carpeta (ej:
C:\Program Files\Apache\maven) - Añade Maven al PATH:
- Variables de entorno > Path > Nuevo
- Añade:
C:\Program Files\Apache\maven\bin
- Verifica:
mvn -version
sudo apt install maven
mvn -versionbrew install maven
mvn -versionSi tienes el proyecto en Git:
git clone <url-del-repositorio>
cd backSi descargaste el proyecto como ZIP:
- Extrae el archivo en una carpeta
- Abre una terminal en esa carpeta
mvn clean install.\mvnw.cmd clean install./mvnw clean installmvn spring-boot:run.\mvnw.cmd spring-boot:run./mvnw spring-boot:runLa aplicación estará disponible en: http://localhost:8080
Una vez iniciada la aplicación, puedes acceder a la documentación interactiva:
- Swagger UI: http://localhost:8080/swagger-ui.html
- API Docs (JSON): http://localhost:8080/api-docs
Desde Swagger UI podrás:
- Ver todos los endpoints disponibles
- Probar cada endpoint directamente desde el navegador
- Ver ejemplos de request y response
- Ver la documentación de cada parámetro
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/users |
Obtener todos los usuarios |
| GET | /api/users/{id} |
Obtener un usuario por ID |
| GET | /api/users/search?nombre={nombre} |
Buscar usuarios por nombre |
| POST | /api/users |
Crear un nuevo usuario |
| PUT | /api/users/{id} |
Actualizar un usuario |
| DELETE | /api/users/{id} |
Eliminar un usuario |
curl http://localhost:8080/api/userscurl http://localhost:8080/api/users/1curl http://localhost:8080/api/users/search?nombre=Juancurl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{
"nombre": "Ana Torres",
"email": "ana@example.com",
"edad": 28
}'curl -X PUT http://localhost:8080/api/users/1 \
-H "Content-Type: application/json" \
-d '{
"nombre": "Juan Pérez Actualizado",
"email": "juan.nuevo@example.com",
"edad": 31
}'curl -X DELETE http://localhost:8080/api/users/1src/
├── main/
│ ├── java/
│ │ └── com/example/restapidemo/
│ │ ├── RestApiDemoApplication.java # Clase principal
│ │ ├── config/
│ │ │ └── OpenApiConfig.java # Configuración Swagger
│ │ ├── controller/
│ │ │ └── UserController.java # Controlador REST
│ │ └── model/
│ │ └── User.java # Modelo de datos
│ └── resources/
│ └── application.properties # Configuración
- @RestController: Marca una clase como controlador REST
- @RequestMapping: Define la ruta base del controlador
- @GetMapping: Maneja peticiones HTTP GET
- @PostMapping: Maneja peticiones HTTP POST
- @PutMapping: Maneja peticiones HTTP PUT
- @DeleteMapping: Maneja peticiones HTTP DELETE
- @PathVariable: Extrae valores de la URL
- @RequestParam: Extrae parámetros de consulta
- @RequestBody: Extrae el cuerpo de la petición
- ResponseEntity: Permite controlar el código de estado HTTP
Causa: Java no está instalado o no está en el PATH
Solución:
- Instala Java JDK 17 siguiendo el "Paso 1" de este README
- Configura JAVA_HOME siguiendo el "Paso 2"
- Reinicia la terminal y verifica:
java -version
Causa: Maven no está instalado (pero no es necesario si usas Maven Wrapper)
Solución:
- Usa Maven Wrapper en su lugar:
.\mvnw.cmd(Windows) o./mvnw(Linux/macOS) - O instala Maven siguiendo el "Paso 3"
Causa: Otro programa está usando el puerto 8080
Solución:
Cambia el puerto en src/main/resources/application.properties:
server.port=8081Causa: No estás en la carpeta correcta del proyecto
Solución:
Navega a la carpeta raíz del proyecto donde está el archivo pom.xml
cd ruta/al/proyecto/backCausa: Spring Boot aún está inicializando
Solución: Espera 10-15 segundos después de que aparezca el mensaje de inicio y recarga la página
Una vez que domines este proyecto básico, puedes expandirlo:
- Añadir validación de datos con
@Validy Bean Validation - Implementar una base de datos real (H2, PostgreSQL, MySQL)
- Añadir Spring Data JPA para persistencia
- Implementar manejo de excepciones personalizado con
@ExceptionHandler - Añadir seguridad con Spring Security
- Implementar tests unitarios con JUnit y Mockito
- Añadir tests de integración con
@SpringBootTest
- Documentación oficial de Spring Boot: https://spring.io/projects/spring-boot
- Guía de Spring REST: https://spring.io/guides/gs/rest-service/
- Documentación de Swagger/OpenAPI: https://swagger.io/docs/
- Tutorial de REST APIs: https://restfulapi.net/
Para más información, consulta el archivo GUIA_INICIO_RAPIDO.md que contiene ejemplos detallados y ejercicios prácticos.