Una API profesional debe estar documentada. Cuando hablamos de documentación, nos suena a una tarea tediosa que nadie quiere realizar. Afortunadamente, NestJS permite automatizar fácilmente la creación de la misma.
Cómo hacer la documentación API Rest
Swagger es un reconocido set de herramientas para la documentación de API Rest. Instala las dependencias necesarias con el comando npm install --save @nestjs/swagger swagger-ui-express y configura el archivo main.ts con el siguiente código.
// main.tsimport { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
async functionbootstrap() {
const app = await NestFactory.create(AppModule);
// Configuración Swagger en NestJSconst config = new DocumentBuilder()
.setTitle('Platzi API')
.setDescription('Documentación Platzi API')
.setVersion('1.0')
.build();
constdocument = SwaggerModule.createDocument(app, config);
// URL API
SwaggerModule.setup('docs', app, document);
await app.listen(process.env.PORT || 3000);
}
bootstrap();
Setea el título, descripción y versión de tu documentación. Lo más importante es la URL para acceder a la misma.
Levanta el servidor con npm run start:dev y accede a localhost:3000/docs para visualizar la documentación autogenerada que mapea automáticamente todos los endpoints de tu aplicación.
Tipado de la documentación
La documentación autogenerada por Swagger es bastante simple, puedes volverla más completa tipando los datos de entrada y salida de cada endpoint gracias a los DTO.
Busca el archivo nest-cli.json en la raíz de tu proyecto y agrega el siguiente plugin:
Lo más relevante aquí es importar PartialType y OmitType desde @nestjs/swagger en lugar de importarlo desde @nestjs/mapped-types. Coloca también el decorador @ApiProperty() en cada una de las propiedades que el DTO necesita.
De esta manera, observarás en la documentación que indica el tipo de dato que requiere cada uno de tus endpoints.