Skip to content

Aplicación api rest basada en el framework Nestjs.

License

Notifications You must be signed in to change notification settings

dkaerit/nest-api-rest

Repository files navigation

Nest Logo

License

Description

Nest framework TypeScript starter repository. A progressive Node.js framework for building efficient and scalable server-side applications.

Este microservice baseplate pretende hacer de estructura de partida para apis rest (como en los boilerplate) para ahorrar código repetitivo y esencial en la implementación de un backend, además de estar pensdo para proyectos de uso didácticos o personales. Incluye una conexión a un base de datos de Mongo Atlas, y servicio de autenticación por jwt.

Tabla de contenidos

  1. Instalación y ejecución.
  2. Modules.
    1. RootModule.
    2. UserModule.
    3. AuthModule.
  3. Models.
  4. Tests.
  5. Support Nest.
  6. Contact.

1. Instalación y ejecución

Como requisito previo para levantar la imagen de producción es necesario tener instalado docker y docker compose en el servidor donde se ha decidido clonar el repositorio. Como alternativa se ofrece la posibilidad de instalar las dependencias de node en el propio directorio sin montar ningún contenedor, aunque es más recomendable la primera opción.

Para que funcione la consexión a su base de datos de mongo atlas, se debe crear un fichero .env en la raíz y definir las variables de entorno para USERNAME, PASSWORD por las correspondientes credenciales que tengan permisos para el acceso a su base de datos, así como actulizar la parte del url de la cadena de conexión ubicada en el fichero /src/database/mongo/mongo.module.ts

Comandos para arrancar el servicio:

$ npm install
$ npm run start # development
$ npm run start:dev # watch mode
$ npm run start:prod # production mode
$ npm run image # levantar contenedor de prod en docker

2. Modules

2.1. RootModule

a drawio (1)

Módulo principal de la api donde se unen el resto de módulos para ser importados en conjuntos en la función bootstrap(), que se encuentra en el fichero principal main.ts. Con la ayuda de la clase core NestFactory que nos proporciona nestjs se crea la instancia de la app, a la que luego se le ordena la escucha del puerto designado.

En este punto se conecta la conexión a la base de datos establecida por MongooseModule.forRoot(...) y exportado como MongoModule. Además, como el resto de módulos, tiene incluido el servicio correspondiente, en este caso, con una única función que devuelve un json con la descripción de la api y su versión que será invocada tras una petición GET a la ruta principal /

public async appInfo() {
    return {
      "name": "API Rest Full", 
      "framework": "Nestjs",
      "version": "8.0.0"
    };
  }

2.2. UserModule

(en proceso)

2.3. AuthModule

(en proceso)

3. Models

Usuarios

@Schema({ versionKey: '_vk' }) 
export class User { 
  @Prop({unique:true}) user: string;
  @Prop({unique:true}) email: string;
  @Prop() passwd: string;
}

4. Tests

$ npm run test # unit tests
$ npm run test:e2e # e2e tests
$ npm run test:cov # test coverage

5. Support Nest

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.

6. Contact

6. License

Nest is MIT licensed.

About

Aplicación api rest basada en el framework Nestjs.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published