我正在 Nest js 中构建更新 API,我想记录我的 API。在此更新 API 中,我有不同类型的用户,并且根据这些用户,我有不同的属性(某些属性在所有类型的用户中都是通用的)。
我想使用这些 DTO 作为不同用户的示例。我怎样才能做到这一点?
我已经尝试过这段代码:
export const updateDirectoryExample = Object.freeze({
sample_1: {
summary: 'Contractor',
value: { ...new UpdateDirectoryContractorDto() },
},
});
控制器代码:
@ApiOkResponse({
type: UpdateDirectoryResDto,
})
@ApiBody({
type: UpdateDirectoryDto,
examples: updateDirectoryExample,
})
updateDirectory(
@AuthUser() reqUserDetails: IRequestUserDetails,
@Body() body: UpdateDirectoryDto,
@Req() request: Request,
) {
return this.directoryService.updateDirectory(reqUserDetails, body, request);
}
此代码在 UI 中显示一个空对象,而不是 DTO 中定义的那些属性。
如果您的
UpdateDirectoryContractorDto
是一个普通的 NestJS DTO,带有一堆修饰字段但没有构造函数,那么调用 new UpdateDirectoryContractorDto()
将返回一个空白 DTO 实例,其中所有字段均未定义。
这意味着当 Swagger 渲染为 JSON 时,
{ ...new UpdateDirectoryContractorDto() }
的值只是一个空对象。相反,您应该传递您期望看到的确切对象作为 examples
的值。
export const updateDirectoryExample = Object.freeze({
sample_1: {
summary: 'Contractor',
value: {
field1: "value1",
field2: "value2",
},
},
});