En este ejercicio se desarrolló un servicio para compartir perfiles de usuarios favoritos, los cuales se almacenan en memoria usando H2 junto con su nickname, para que luego puedan ser consultados por un nickname. Se documentó la API REST con Open API Swagger y los endpoints fueron probados con Postman, adicionalmente se implementaron pruebas automatizadas con JUnit para corroborar el correcto funcionamiento del microservicio.
En este ejercicio se desarrolló un servicio para compartir perfiles de usuarios favoritos,
los cuales se almacenan en memoria usando H2 junto con su nickname, para que luego puedan ser consultados por un nickname.
Se documentó la API REST con Open API Swagger y los endpoints fueron probados con Postman,
adicionalmente se implementaron pruebas automatizadas con JUnit para corroborar el correcto funcionamiento del microservicio.
Se aplicó una arquitectura basada en Domain Driver Design y se aplicaron patrones como Adapter, Repositorios entre otros.
Para un mejor rendimiento de la api dado el volumen de datos manejados se habilitó la compresión gzip y HTTP2;
y se persistieron los datos en memoria como json para minimizar el número de consultas sobre los datos.
La documentación de la api se encontrará disponible en: http://127.0.0.1:8081/favorite-user-profiles-swagger-docs
-
Como IDE de desarrollo se emplea
Intellij IDEA. Descargar aquí.- Instalar en el IDE el plugin
Lombok. Para Intellij descargar aquí.
- Instalar en el IDE el plugin
-
Para gestionar las dependencia se emplea
MAVEN. Descargar aquí.- El
pom/xmlcontiene todas las dependencias que deben ser descargadas para el despliegue de este proyecto.
- El
-
Para la persistencia en memoria se emplea
H2. -
Postmanpara probar los endpoint de las APIs. Descargar aquí. -
Clonar el proyecto desde: https://github.com/osmelpa/FavoriteUserProfiles_Microservice.git
En la carpeta readme adjunta en el proyecto se encuentra el archivo RANDOM USER API REST.postman_collection.json el cual contiene los endpoints desarrollados,
los cuales puede ser importado en Postman.
El ejercicio consta de 2 endpoints fundamentales.
Endpoint #1 Recibir listado de perfiles de los usuarios favoritos.
-
POST /firmae/v1/profiles
-
Ejemplo: http://127.0.0.1:8081/firmae/v1/profiles Se especifica por Body el listado, retorna 204 status porque no devuelve contenido, el listado se recibe y se almacena en memoria.
-
Vista de una solicitud realizada por postman
Endpoint #2 Consultar la lista guardada con el listado de usuarios favoritos por el nickname del perfil creado por el usuario.
-
GET /firmae/v1/profiles/{nickname}
-
Ejemplo: http://127.0.0.1:8081/firmae/v1/profiles/N1-01 Se especifica por PathVariable el nickname del perfil deseado, retorna 200 status porque devuelve el listado de usuarios favoritos que se corresponden al nickname del perfil especificado de forma satisfactoria.
-
Vista de una solicitud realizada por postman
- El archivo
application.propertiescontiene las configuraciones del proyecto como puerto, perisitencia en memoria con H2, configuraciones de compresión gzip y http2 y ruta para la documentación. - La clase
URIConstantcentraliza las URI del proyecto para favorecer la reutilización. - La clase
SwaggerDocumentationalmacenan los propeties de la documentación de la api y así simplificar la clase controladora. - La clase
ProfileRestControlleres la API REST del ejercicio que gestiona el manejo de los permiles con el listado de usuarios favoritos. - La clase
FavoritesProfileListAdapteres el adaptador que en DDD se encarga del mapeo de recursos a entidades del dominio. - La clase
FavoritesProfileServicees el servicio que desarrolla la lógica y comunicación con el repositorio para la persistencia. - La clase
FavoritesProfileRepositoryes el repositorio para la persistencia en memoria, usando H2 y JPA.
La implementación de las pruebas automatizadas se encuentran en la carpeta test del proyecto.