Se puede extender la documentacion de swagger con muchos decoradores
https://docs.nestjs.com/openapi/introduction
Para los controladores se utiliza:
- ApiTags: para agrupar los metodos de los controladores
- ApiOperation para documentar que es lo que hace el metodo
- Por cada metodo del controlador, se puede documentar las respuestas
- ApiResponse: se le define el http code
status
y la descripciondescription
- Se puede extender con decoradores particulares para cada response que viene con su status:
- ApiOkResponse: http code status 200
- ApiBadRequestResponse http code status 400
- ApiForbiddenResponse, http code 403
- ApiUnauthorizedResponse, http code 401
- ApiCreatedResponse, http code 201
- ApiNotFoundResponse, http code 404
- Se puede extender con decoradores particulares para cada response que viene con su status:
Se importa lo siguiente:
import {
ApiTags,
ApiOperation,
ApiBadRequestResponse,
ApiForbiddenResponse,
ApiUnauthorizedResponse,
ApiCreatedResponse,
ApiNotFoundResponse,
ApiOkResponse,
} from '@nestjs/swagger';
Y se implelementan los decoradores:
- Para agrupar
@ApiTags('Users')
@Controller('users')
export class UsersController {
...
- Para cada metodo, en este caso de un get, aparecia en swager el 200 y 404
@Get()
@ApiOkResponse()
@ApiNotFoundResponse()
findAll() {
return this.usersService.findAll();
}
- en el caso de un POST:
@Post()
@ApiOperation({ summary: 'Create user' })
@ApiUnauthorizedResponse({
description: 'Not Authorized',
})
@ApiBadRequestResponse({
description: 'bad request',
})
@ApiCreatedResponse({
description: 'Product created',
})
@ApiForbiddenResponse()
create(@Body() payload: CreateUserDto) {
return this.usersService.create(payload);
}
Para los DTOs:
Se importa PartialType y ApiProperty
import { PartialType, ApiProperty } from '@nestjs/swagger';
export class CreateUserDto {
@IsString()
@IsEmail()
@ApiProperty({ description: 'user email' })
readonly email: string;
@IsString()
@IsNotEmpty()
@Length(6)
@ApiProperty({ description: 'password' })
readonly password: string;
@IsNotEmpty()
@ApiProperty({ description: 'role' })
readonly role: string;
}
export class UpdateUserDto extends PartialType(CreateUserDto) {}
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.