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

时间:2020-05-27 18:51:40

标签: 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");

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

enter image description here

2 个答案:

答案 0 :(得分:2)

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

Nest有一个Swagger plugin,它将读取您的Typescript代码并相应地修饰您的类型和方法,但是您必须选择启用它。否则,您需要使用@nestjs/swagger包中的装饰器来告诉Swagger方法进出所需的类型。

只要与@Body()对应的类型具有招摇装饰器,或者您启用了招摇插件并且具有有效的类,则招摇用户界面应显示达到预期的效果,但是使用上述方法并使用类型any不会对您有任何帮助。

答案 1 :(得分:0)

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