3

我正在使用@nestjs/swagger。这是我如何使用它的简单示例


    const document = SwaggerModule.createDocument(
      app,
      new DocumentBuilder()
        .setTitle('API')
        .setDescription('API')
        .setVersion('1.0')
        .addBearerAuth()
        .build(),
    );

    SwaggerModule.setup('/api/doc', app, document);

之前我可以使用添加 API url,setHost('URL HERE')但现在它不起作用。所以我想添加将从 Swagger UI 发送请求的 api url。如果问题不是很聪明,我是初学者,很抱歉谢谢!

4

2 回答 2

4

看起来您正在使用@nestjs/swagger 版本 4***。setHost 在版本 4*** 中被删除,但在版本 3*** 中可用。如果它在我猜@nestjs/swagger 的版本在您的项目中更新之前有效。

正如你在这里看到的

如果您当前使用的是@nestjs/swagger@3.*,请注意版本 4.0 中的以下中断/API 更改。

以下装饰器已更改/重命名:

  • @ApiModelProperty 现在是 @ApiProperty
  • @ApiModelPropertyOptional 现在是 @ApiPropertyOptional
  • @ApiResponseModelProperty 现在是 @ApiResponseProperty
  • @ApiImplicitQuery 现在是 @ApiQuery
  • @ApiImplicitParam 现在是 @ApiParam
  • @ApiImplicitBody 现在是 @ApiBody
  • @ApiImplicitHeader 现在是 @ApiHeader
  • @ApiOperation({ title: 'test' }) 现在是 @ApiOperation({ summary: 'test' })
  • @ApiUseTags 现在是 @ApiTags

DocumentBuilder 重大更改(更新的方法签名):

  • 添加标签
  • addBearerAuth
  • 添加OAuth2
  • setContactEmail 现在是 setContact
  • setHost 已被移除
  • setSchemes 已被删除(使用 addServer 代替,例如 addServer('http://'))

添加了以下方法:

  • 添加服务器
  • 添加ApiKey
  • addBasicAuth
  • 添加安全性
  • 添加安全要求

因此,如果您需要将 API URL 添加到 Swagger UI 页面,您可以通过添加 .addServer(API_URL). API_URL 可以是类似/apihttps://example.com/api. 并且可以多次添加。如果您需要例如本地使用、开发和生产环境的 URL。

完整的例子看起来像

const document = SwaggerModule.createDocument(
      app,
      new DocumentBuilder()
        .setTitle('API')
        .setDescription('API')
        .setVersion('1.0')
        .addBearerAuth()
        .addServer(API_URL)
        .build(),
    );

    SwaggerModule.setup(swaggerPath, app, document);
于 2021-07-09T19:57:00.877 回答
0

我认为您可能缺少控制器所在位置的“包含”参数。尝试添加

   const document = SwaggerModule.createDocument(
  app,
  new DocumentBuilder()
    .setTitle('API')
    .setDescription('API')
    .setVersion('1.0')
    .addBearerAuth()
    .build(),
    { incliude: [ModuleWhereControllerIs]  }
);
于 2021-07-09T11:50:04.120 回答