Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP Codes API

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.

Descripción

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)

Tecnologías

  • Java 21
  • Spring Boot 3
  • Spring Web
  • Spring Validation
  • Maven

Ejecución del proyecto

Clonar el repositorio y ejecutar:

mvn spring-boot:run

O ejecutar la clase principal HttpCodesApplication desde el IDE.

El servidor inicia en:

http://localhost:8080

Endpoints

Usuarios

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

Global Controller

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

Response Status Controller

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

Sample Controller

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

Manejo de errores

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

DTOs

UserRequest
DTO de entrada con validaciones:

  • username obligatorio
  • email obligatorio y con formato válido
  • password obligatorio

UserDto
DTO de salida que incluye:

  • userName
  • email
  • password
  • name
  • hireDate
  • active

Se utilizan anotaciones como: JsonProperty
JsonAlias
JsonFormat
JsonInclude

Servicio

MemoryUserServices implementa la lógica en memoria usando una lista.

Responsabilidades:

  • Validar datos
  • Verificar duplicados
  • Crear usuarios
  • Eliminar usuarios
  • Buscar por username y email

Modelo

House
Clase de ejemplo que implementa el patrón Builder.

Estructura del proyecto

controller
dto
exception
model
services
config

Buenas prácticas aplicadas

  • Uso correcto de códigos HTTP
  • Validaciones con anotaciones
  • Manejo global de excepciones
  • Separación de responsabilidades
  • Uso de DTOs para control de datos

Notas

  • No utiliza base de datos, todo es en memoria
  • Proyecto enfocado en aprendizaje de APIs REST
  • Escalable a JPA y base de datos relacional

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages