微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NestJS / Swagger-未获取完整说明

如何解决NestJS / Swagger-未获取完整说明

我在让Swagger正常工作时遇到问题。我可以获取请求正文的示例,但不能获取响应或swagger-json的示例。响应显示{},而swagger-json是:

{
  statusCode: 404,message: "Cannot GET /swagger-json",error: "Not Found",}

我的nest-cli.json文件是:

{
  "collection": "@nestjs/schematics","sourceRoot": "src","compilerOptions": {
    "deleteOutDir": true,"plugins": ["@nestjs/swagger/plugin"]
  }
}

在我的main.ts中,我有

import { DocumentBuilder,SwaggerModule } from '@nestjs/swagger';
...
const options = new DocumentBuilder()
    .setTitle('ILuvCoffee')
    .setDescription('Coffee Application')
    .setVersion('1.0')
    .build();

  const document = SwaggerModule.createDocument(app,options);
  SwaggerModule.setup('api',app,document);

我正在上nest.js课程,到目前为止我已经非常忠实地遵循了。遇到此障碍时,我仔细检查了我的代码是否正确,甚至复制/粘贴了代码。我还仔细检查了我的DTO文件是否遵循*.dto.ts和我的实体文件*.entity.ts。但是我仍然无法让Swagger显示超出请求的内容。有什么想法吗?谁在看我不是?

如果您想更深入地了解一下,这里是我的仓库:https://github.com/jstrother/iluvcoffee

谢谢!

解决方法

好像您没有在控制器中指定实际的响应类型,而是使用<any>,例如:

@Get(':id')
findOne(@Param('id') id: string): Promise<any> {
  console.log(id);
  return this.coffeesService.findOne(id);
}

尝试将这些any更改为实际类型

@Get(':id')
findOne(@Param('id') id: string): Promise<Coffee> {
  console.log(id);
  return this.coffeesService.findOne(id);
}

请注意,您还可以使用ApiResponse装饰器来明确定义响应->检查official example以获得更多详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。