Desarrollado para fines demostrativos y prácticos con framework Nest version 8.0.0, donde se plantean los siguientes requisitos:
-
Realizar Api Rest que posibilite registro de usuario, control de accceso, gestión de post y cargas de imágenes para ser publicadas dentro del mismo servidor.
-
Utilizar sequelize v6 como ORM.
-
Utilizar Swagger para describir las operaciones que estarán disponibles en el API.
-
Se deben implementar test automáticos.
-
Se crean modelos con sequelize fuertemente typados, con validaciones y documentación swagger: user, profile, post
-
Se implementa campo virtual (avatarUrl) en modelo user
-
Se utiliza el middleware Multer y se implementan decorators ApiFiles, ApiFileFields y el PipeTransform ParseFile para facilitar el manejo de carga de ficheros.
-
Se permite acceso estático a las imágenes cargadas en el servidor con el módulo serve-static.
-
Se crean servicios donde se realizan todas las operaciones con modelos y base de datos auth, users, profile, posts.
-
Se utilizan transaction cuando se realizan más de un operaciones de CRUD en una misma funcionalidad para posibilitar realizar commit/rollback.
-
Se implementa módulo de autenticación y se restinguen los Access Point requeridos con:
@UseGuards(AuthGuard('jwt'))
-
Se documentan los controller ( auth, profiles, files, post ) con decoradores de la libreria nestjs/swagger donde se describen todas las operaciones disponibles en el Api, con nombre de Access Point, método (Get, Post, Post, Delete), parámetros y respuestas con tipos de datos y ejemplos.
-
Se implementan test e2e para las operaciones: registro, login, crear post, carga de fichero.
- Clonar repositorio: https://github.com/yurisnel/InstaShareApiNest
- Descargar dependencias:
$ npm install
- Para ejecutar servidor:
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
- Para ejecutar test:
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
- Abrir api doc en navegador en: http://localhost:3000/api/
PD: Esta Api Rest es utilizada por el proyecto https://github.com/yurisnel/InstaShareAngular