我试图在我的招摇的文档路线中添加摘要,但是找不到合适的装饰器来定义摘要。
有些路线中我没有指定任何DTO。因此,我想为该端点手动添加请求正文。
user.controller.ts
@Controller('users')
@ApiTags('User')
@ApiBearerAuth()
export class UsersController {
constructor(private readonly service: UsersService) {}
@Get()
async findAll() {
const data = await this.service.findAll();
return {
statusCode: 200,
message: 'Users retrieved successfully',
data,
};
}
}
auth.controller.ts
@UseGuards(AuthGuard('local'))
@Post('login')
@ApiParam({
name: 'email',
type: 'string'
})
@ApiParam({
name: 'password',
type: 'string'
})
async login(@Request() req) {
return this.authService.login(req.user);
}
答案 0 :(得分:2)
对于端点摘要,可以使用@ApiOperation()
。对于模式,可以使用@ApiResponse()
@Get()
@ApiOperation({ summary: 'summary goes here' })
@ApiResponse({ status: 200, description: 'description goes here', schema: { ...define schema here... } })
async findAll() {}
从以下文档中获取有关原始定义的更多信息:https://docs.nestjs.com/recipes/swagger#raw-definitions
答案 1 :(得分:2)
我建议为所有端点(resp和req)创建一个DTO。
以下是使用DTO + @ApiProperty装饰器向架构中添加摘要的方法(在屏幕快照中,单击红色圆圈区域中的“模式”)
import { ApiProperty } from '@nestjs/swagger';
export class ExampleRedditDTO {
@ApiProperty({
type: String,
description: "The target subreddit"
})
targetSub!: string;
@ApiProperty({
type: Number,
description: "The number of top posts you want back"
})
postCount!: number;
}