请求正文未在 Nest.js + Swagger 中显示

p0t*_*tta 2 swagger swagger-ui nestjs nestjs-swagger nestjs-config

我的控制器代码是这样的。

@Controller('customer')
export class CustomerController{

    constructor(private readonly customerService: CustomerService){}

    @Post('lookup')
    async someMethod(@Body() body:any){

        console.log("BEGIN -- CustomerController.someMethod");
Run Code Online (Sandbox Code Playgroud)

我期待在 Swagger 中看到一个我可以输入一些文本作为请求正文的地方,但我看到的是这个

在此处输入图片说明

Tok*_*ris 20

添加@ApiProperty()

export class User{

 @ApiProperty()
  name:string
 
}
Run Code Online (Sandbox Code Playgroud)


Jay*_*iel 5

所以听起来这里发生了一些事情。Swagger UI 是用于发送请求的辅助工具,但要做到这一点,它需要知道请求正文的形状。any不够好。如果您正在寻找一种允许您发送任何内容的工具,curl 或邮递员是您最好的选择(至少是免费的)。

Nest 有一个Swagger 插件,可以通读您的 Typescript 代码并相应地装饰您的类型和方法,但您必须选择启用它。否则,您需要使用@nestjs/swagger包中的装饰器来告诉 Swagger 哪些类型需要传入和传出方法。

只要对应的类型@Body()具有 swagger 装饰器,或者您启用了 swagger 插件具有有效的类,swagger UI 就应该按预期显示,但是使用上述类型并使用类型any不会对您有任何好处。

  • 我尝试将主体类型设置为界面,但仍然不起作用。最后,在类工作时替换接口。谢谢... (2认同)