Desarrollar una API REST que consuma la API externa de JSONPlaceholder para gestionar posts de usuarios. El candidato debe demostrar su capacidad para integrar servicios externos usando Feign Client, mapear datos entre diferentes DTOs y crear endpoints funcionales.
- Java 11+
- Spring Boot
- Spring Cloud OpenFeign
- Maven
- Lombok
Se requiere crear una API que actúe como intermediario entre clientes y la API pública de JSONPlaceholder (https://jsonplaceholder.typicode.com). La API debe permitir obtener información de usuarios junto con sus posts, con la opción de incluir el conteo de comentarios.
La API debe consumir los siguientes endpoints de JSONPlaceholder:
- GET
/users/{userId}
- Obtener información de usuario - GET
/users/{userId}/posts
- Obtener posts de un usuario - GET
/posts/{postId}/comments
- Obtener comentarios de un post
Los siguientes endpoints son críticos y serán evaluados principalmente:
- POST
/posts/api/v1/user/posts
- Recibe un
PostsRequest
en el body - Debe retornar información del usuario y sus posts
- Si
includeComments
es true, incluir el conteo de comentarios por post
- GET
/posts/api/v1/user/{userId}/summary?includeComments={boolean}
- Parámetro
includeComments
opcional (default: false) - Funcionalidad idéntica al endpoint POST pero usando parámetros de URL
- Validación de Usuario: Verificar que el usuario existe antes de buscar sus posts
- Mapeo de Datos: Transformar los DTOs externos a DTOs de respuesta internos
- Conteo Condicional: Solo incluir
commentsCount
siincludeComments
es true - Logging: Implementar logs informativos para el seguimiento de peticiones
Petición POST:
{
"userId": 1,
"includeComments": true
}
Respuesta esperada:
{
"user": {
"id": 1,
"name": "Leanne Graham",
"email": "[email protected]"
},
"totalPosts": 10,
"posts": [
{
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit...",
"commentsCount": 5
}
]
}
Petición GET:
GET /posts/api/v1/user/1/summary?includeComments=false
Tiempo Estimado: 60 minutos
Recursos Útiles:
- Documentación JSONPlaceholder: https://jsonplaceholder.typicode.com/
- Usuarios de prueba disponibles: 1-10