gpt4 book ai didi

swagger - 为 ApiParam 和 ApiQuery 定义 DTO

转载 作者:行者123 更新时间:2023-12-03 17:00:35 25 4
gpt4 key购买 nike

我正在使用 nestjs swagger module并想要创建我的 API 文档。对于依赖于请求主体的端点,我可以将 DTO 类分配给文档,例如

@ApiBody({ type: CreateUserDTO })

一些端点也依赖于请求参数或查询。对于参数,我会做类似的事情

@ApiParam({ type: GetUserByIdDTO })

(我知道这是一个不好的例子,因为用户 ID 不需要 DTO,但我们假设您想使用类验证器通过 DTO 类验证您的参数)

但是我收到了这个错误

Argument of type '{ type: typeof GetUserByIdDTO; }' is not assignable to parameter of type 'ApiParamOptions'. Property 'name' is missing in type '{ type: typeof GetUserByIdDTO; }' but required in type 'ApiParamMetadata'.

对于查询我会做类似的事情

@ApiQuery({ type: GetUsersDTO })

得到这个错误

Argument of type '{ type: typeof GetUsersDTO; }' is not assignable to parameter of type 'ApiQueryOptions'. Property 'name' is missing in type '{ type: typeof GetUsersDTO; }' but required in type 'ApiQueryMetadata'.

所以 APIBody 装饰器似乎工作正常,但我该如何修复我的 APIParamAPIQuery 装饰器?

最佳答案

使用命名参数/查询时需要

@ApiQuery@ApiParam,例如 @Query('pageSize') o @Param('id')。在这种情况下,NestJS Swagger 模块应该直接从指定的 DTO 对象中提取信息,例如:

async findElements(@Query() query: ElementsQueryDto) {
// ...
}

需要注意的重要一点是,Dtos 应该是类,而不是接口(interface)。

关于swagger - 为 ApiParam 和 ApiQuery 定义 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61440798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com