API REST desarrollada en Spring Boot para el registro de usuarios, cumpliendo reglas de validación, persistencia en base de datos en memoria y generación de token JWT.
- Java 21
- Spring Boot 3
- Spring Data JPA
- Spring Validation
- Spring Security (configuración personalizada)
- H2 Database (en memoria)
- JWT (Json Web Token)
- Swagger / OpenAPI
- Lombok
- Gradle
La aplicación sigue una arquitectura en capas:
API REST desarrollada en Spring Boot para el registro de usuarios, cumpliendo reglas de validación, persistencia en base de datos en memoria y generación de token JWT.
- Java 21
- Spring Boot 3
- Spring Data JPA
- Spring Validation
- Spring Security (configuración personalizada)
- H2 Database (en memoria)
- JWT (Json Web Token)
- Swagger / OpenAPI
- Lombok
- Gradle
La aplicación sigue una arquitectura en capas: Controller → Service → Repository → Database
- Controller: expone endpoints REST
- Service: lógica de negocio
- Repository: acceso a datos con JPA
- DTOs: contratos de entrada/salida
- Entity: modelo de base de datos
- Config: configuración (Security, Swagger, JWT)
- Exception Handler: manejo global de errores
- id (UUID)
- name
- email (único)
- password (encriptado)
- created
- modified
- lastLogin
- token
- isActive
- id
- number
- citycode
- contrycode
- user_id (FK)
Relación:
- Controller: expone endpoints REST
- Service: lógica de negocio
- Repository: acceso a datos con JPA
- DTOs: contratos de entrada/salida
- Entity: modelo de base de datos
- Config: configuración (Security, Swagger, JWT)
- Exception Handler: manejo global de errores
- id (UUID)
- name
- email (único)
- password (encriptado)
- created
- modified
- lastLogin
- token
- isActive
- id
- number
- citycode
- contrycode
- user_id (FK)
Relación:User 1 --- N Phone
- Se utiliza
BCryptPasswordEncoderpara encriptar contraseñas - Generación de token JWT al registrar usuario
- Seguridad HTTP deshabilitada para simplificar pruebas
yaml spring: datasource: url: jdbc:h2:mem:userdb
server: port: 8090
./gradlew bootRun
POST /api/users
- Request
{ "name": "Daniel Gallo", "email": "daniel@gallo.org", "password": "Abcde12", "phones": [ { "number": "1234567", "citycode": "1", "contrycode": "57" } ] } Response { "id": "uuid", "created": "fecha", "modified": "fecha", "last_login": "fecha", "token": "jwt", "isactive": true }
-
Email formato válido
-
Password: al menos 1 mayúscula letras minúsculas mínimo 2 números
-
Email único Manejo de errores
- Código Descripción
- 400 Datos inválidos
- 409 Email ya registrado
- 500 Error interno
- Código Descripción
Ejemplo:
{ "mensaje": "El correo ya registrado" }
- Ejecutar: ./gradlew test
Incluye pruebas para:
- Registro exitoso
- Email duplicado
- Validaciones de email
- Validaciones de password
Disponible en:
H2 Console
-
Credenciales:
- JDBC: jdbc:h2:mem:userdb
- user: sa
- password: vacío
Esta API proporciona un sistema básico de registro de usuarios con validaciones, seguridad y persistencia en memoria. Es una base sólida para construir funcionalidades adicionales como autenticación, gestión de usuarios, etc.
-
(docs/images/arquitectura.png)
-
Editable en Figma: https://www.figma.com/board/1YrChYm1n06NpiHZZtKV7U/Arquitectura-API-Registro-Usuarios?node-id=0-1&t=qrhboQsMyWnWMI6w-1
- (docs/images/modelo-datos.png)