Proyecto desarrollado con Spring Boot que demuestra el uso correcto de códigos HTTP, manejo de errores globales, validaciones con DTOs y estructura básica de una API REST.
Esta API permite gestionar usuarios en memoria, validar datos de entrada, manejar errores de forma centralizada y demostrar diferentes respuestas HTTP mediante varios controladores de ejemplo.
El proyecto está enfocado en buenas prácticas como:
- Uso de DTOs para entrada y salida de datos
- Manejo global de excepciones
- Validaciones con Jakarta Validation
- Uso correcto de códigos HTTP
- Separación de capas (controller, service, dto)
- Java 21
- Spring Boot 3
- Spring Web
- Spring Validation
- Maven
Clonar el repositorio y ejecutar:
mvn spring-boot:run
O ejecutar la clase principal HttpCodesApplication desde el IDE.
El servidor inicia en:
Base URL: /api/users
GET /api/users
Obtiene todos los usuarios
Respuesta: 200 OK
GET /api/users/{username}
Obtiene un usuario por username
Respuesta: 200 OK, 404 NOT FOUND
GET /api/users/email?email=correo@test.com
Obtiene un usuario por email
Respuesta: 200 OK, 404 NOT FOUND
POST /api/users
Crea un nuevo usuario
Ejemplo de body: { "user_name": "jorge", "email": "jorge@test.com", "password": "123456", "name": "Jorge" }
Respuestas:
201 CREATED
400 BAD REQUEST
409 CONFLICT
DELETE /api/users/{username}
Elimina un usuario
Respuestas:
204 NO CONTENT
404 NOT FOUND
Base URL: /api/global
GET /api/global
Obtiene todos los elementos
POST /api/global
Crea un nuevo elemento validando que el email no esté repetido
Base URL: /api/status
GET /api/status
Obtiene lista de números
POST /api/status
Agrega un número
Ejemplo: { "number": "10" }
Respuestas:
201 CREATED
400 BAD REQUEST si el valor no es numérico
Base URL: /api/sample
GET /api/sample
Respuestas:
200 OK
204 NO CONTENT
GET /api/sample/{index}
Respuestas:
200 OK
204 NO CONTENT
400 BAD REQUEST
POST /api/sample
Crea un elemento
Respuesta:
201 CREATED
Se implementa un manejador global de excepciones con RestControllerAdvice.
Formato de respuesta de error:
{ "timestamp": "2026-03-21 09:00:00 PM", "status": 400, "error": "Bad Request", "message": "Mensaje de error", "path": "/api/users" }
Excepciones manejadas:
MethodArgumentNotValidException → 400
MissingValuesException → 400
AlreadyExistException → 409
UserNotFoundException → 404
EmailAlreadyExistException → 400
UserRequest
DTO de entrada con validaciones:
- username obligatorio
- email obligatorio y con formato válido
- password obligatorio
UserDto
DTO de salida que incluye:
- userName
- password
- name
- hireDate
- active
Se utilizan anotaciones como:
JsonProperty
JsonAlias
JsonFormat
JsonInclude
MemoryUserServices implementa la lógica en memoria usando una lista.
Responsabilidades:
- Validar datos
- Verificar duplicados
- Crear usuarios
- Eliminar usuarios
- Buscar por username y email
House
Clase de ejemplo que implementa el patrón Builder.
controller
dto
exception
model
services
config
- Uso correcto de códigos HTTP
- Validaciones con anotaciones
- Manejo global de excepciones
- Separación de responsabilidades
- Uso de DTOs para control de datos
- No utiliza base de datos, todo es en memoria
- Proyecto enfocado en aprendizaje de APIs REST
- Escalable a JPA y base de datos relacional