3

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

@Controller('customer')
export class CustomerController{

    constructor(private readonly customerService: CustomerService){}

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

        console.log("BEGIN -- CustomerController.someMethod");

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

在此处输入图像描述

4

5 回答 5

5

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

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

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

于 2020-05-27T18:59:37.793 回答
4

添加@ApiProperty()

export class User{

 @ApiProperty()
  name:string
 
}
于 2021-09-09T21:37:43.670 回答
0

我的端点接受未知的键/值数据并且我遇到了同样的问题(我尝试了any, unknown, Record<string, any>, object, {})。终于@Body() data: Map<string, any>为我工作了。

于 2021-01-29T08:23:10.907 回答
0

试试这样:

@ApiBody({description: "body:any someMethod"})
@Post('lookup')
async someMethod(@Body() body:any){
console.log("BEGIN -- CustomerController.someMethod");
}
于 2021-11-02T19:08:42.247 回答
0

Swagger 无法解释您的代码。这不是您的代码的问题。如果您的目标是测试您的 API 以供 UI 团队使用,而不是全面的 swagger 文档,那么我发现使用 Postman 是最简单的。尝试使用 Postman 访问您的 API

于 2021-12-31T06:39:25.860 回答