Este proyecto consiste en el desarrollo de una solución que permita gestionar usuarios y sus respectivos teléfonos, incluyendo la capacidad de crear, buscar, actualizar y eliminar usuarios.
Desarrollar una API RESTful utilizando Spring Boot que gestione usuarios y teléfonos. El proyecto debe seguir buenas prácticas de desarrollo, aplicar principios SOLID, y utilizar las tecnologías especificadas a continuación.
- Utilizar Java 17 para la implementación.
- Aprovechar las características avanzadas de Java 17, como lambdas y streams, cuando sea apropiado.
- Utilizar Maven como gestor de dependencias.
- Construir la aplicación utilizando la última versión disponible de Spring Boot.
- Utilizar una base de datos H2 en memoria para almacenamiento temporal.
- Crear dos tablas:
users
yphones
.
- Implementar una capa de persistencia utilizando JPA para manejar el almacenamiento y la recuperación de usuarios y teléfonos.
- Implementar JWT para la autenticación y generación de tokens de usuario.
- Documentar la API utilizando OpenAPI y Swagger.
Implementar un endpoint para crear un usuario con la siguiente estructura JSON:
Endpoint: POST /manager-api/user/save
Request:
{
"name": "Juan Rodriguez",
"email": "juan@rodriguez.com",
"password": "hunter2",
"phones": [
{
"number": "1234567",
"citycode": "1",
"contrycode": "57"
}
]
}
Response:
{
"id": "bc57e03d-dfbf-4fbc-b9ef-d5f47f6e77db",
"created": "2024-08-22 02:58:51",
"modified": "2024-08-22 02:58:51",
"lastLogin": "2024-08-22 02:58:51",
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqdWFuQHJvZHJpZ3Vlei5jb20iLCJpYXQiOjE3MjQyOTU1MzEsImV4cCI6MTcyNDMwOTkzMX0.g49dycJcZijrFoFXcN9vcU6WI9PnUa1b4sB4xqqrZ2pc4uJfZQdgSQZehMK7qml22fMYy0_gOLq08gQ8pPlC4g",
"isactive": true
}
Implementar un endpoint para buscar un usuario por su UUID.
Endpoint: GET /manager-api/user/find/{uuid}
Response:
{
"id": "bc57e03d-dfbf-4fbc-b9ef-d5f47f6e77db",
"email": "juan@rodriguez.com",
"created": "2024-08-21 05:00:00",
"modified": "2024-08-21 05:00:00",
"lastLogin": "2024-08-21 05:00:00",
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqdWFuQHJvZHJpZ3Vlei5jb20iLCJpYXQiOjE3MjQyOTU1MzEsImV4cCI6MTcyNDMwOTkzMX0.g49dycJcZijrFoFXcN9vcU6WI9PnUa1b4sB4xqqrZ2pc4uJfZQdgSQZehMK7qml22fMYy0_gOLq08gQ8pPlC4g",
"isactive": false,
"phones": [
{
"number": "1234567",
"citycode": "1",
"contrycode": "57"
}
]
}
Implementar un endpoint para actualizar la información de un usuario existente.
Endpoint: PUT /manager-api/user/update
Request:
{
"id": "bc57e03d-dfbf-4fbc-b9ef-d5f47f6e77db",
"name": "Juana aaaa",
"email": "juan@rodriguez.com"
}
Response:
{
"id": "bc57e03d-dfbf-4fbc-b9ef-d5f47f6e77db",
"email": "juan@rodriguez.com",
"created": "2024-08-21 05:00:00",
"modified": "2024-08-22 02:58:56",
"lastLogin": "2024-08-22 02:58:56",
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqdWFuQHJvZHJpZ3Vlei5jb20iLCJpYXQiOjE3MjQyOTU1MzEsImV4cCI6MTcyNDMwOTkzMX0.g49dycJcZijrFoFXcN9vcU6WI9PnUa1b4sB4xqqrZ2pc4uJfZQdgSQZehMK7qml22fMYy0_gOLq08gQ8pPlC4g",
"isactive": true,
"phones": [
{
"number": "1234567",
"citycode": "1",
"contrycode": "57"
}
]
}
Implementar un endpoint para eliminar un usuario por su UUID.
Endpoint: DELETE /manager-api/user/delete/{uuid}
Response: HTTP 200 OK
- Se utilizo OpenAPI y Swagger para documentar de manera clara la API.
-El proyecto esta compartido en el siguiente direccion de github
- Incluir instrucciones claras sobre cómo ejecutar y probar la aplicación.
- Incluir ejemplos de JSON para pruebas en un archivo de texto o mediante un proyecto en Postman. Nota: Si esto falta, se restarán puntos de la evaluación.