NestJS - Swagger - 显示所有枚举值

汤姆93

我想在 swagger UI 的 body 部分查看有关我的 dto 属性的所有枚举值。

我把这个 @ApiQuery 装饰器放在我的代码中:

@ApiQuery({
  name: 'name',
  enum: ENUM_NAME,
  isArray: true,
})
@Post()
async name(...):Promise<...> {...}

但这与 @Query 装饰器一起使用,让 swagger 的过滤器工作。(在 NestJS Swagger 文档中找到)。

所以我没有像你看到的那样把@Query 放在我的代码中,因为我想在我的 dto 中使用枚举的值。

这是结果

但它不喜欢这个解决方案。这是一种解决方法。

有没有更好的方法来实现这个结果?

约克利

在 swagger 的 body 部分不可能像查询部分那样做,但你可以这样做:

// app.controller.ts

@Post()
public async name(@Body() dto: NameDto): Promise<void> {}

// name.dto.ts

// This is enum for demo
enum Demo {
    DEMO_1 = 'DEMO_1',
    DEMO_2 = 'DEMO_2',
}

export class NameDto {
    @ApiProperty({
        enum: Demo,
        isArray: true,
        example: [Demo.DEMO_1, Demo.DEMO_1],
    })
    public name: Demo[];
}

结果=> 昂首阔步

或者,如果您不想使用 dto

// app.controller.ts

@Post()
@ApiBody({
    schema: {
       type: 'object',
         properties: {
            name: {
              type: 'array',
              items: {
                 enum: [Demo.DEMO_1, Demo.DEMO_2],
                 example: [Demo.DEMO_1, Demo.DEMO_2],
              },
            },
        },
    },
})
public async name(@Body() dto: any): Promise<void> {}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章