【问题标题】:@nestjs/swagger: How to add API URL?@nestjs/swagger:如何添加 API URL?
【发布时间】:2021-09-19 12:34:54
【问题描述】:

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


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

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

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

【问题讨论】:

  • 请添加您收到的错误详细信息或描述您面临的问题。
  • 亲爱的@AvaniKhabiya,我们的目标是添加 api url,Swagger UI 将向其发送请求。之前它由 setHost 工作,但现在它不起作用。
  • 看起来您使用的是@nestjs/swagger 版本 4***。 setHost 在版本 4*** 中被删除,但在版本 3*** 中可用。如果它在我猜@nestjs/swagger 的版本在您的项目中更新之前有效。正如我在答案中解释的那样,尝试使用.addServer(API_URL)
  • 嗯。正是@Cyber​​Eternal。我正在使用@nestjs/swagger 4.8.1。您的答案有效,并且正是我需要的。非常感谢。
  • 很高兴帮助@stratovarius!

标签: node.js swagger nestjs swagger-ui nestjs-swagger


【解决方案1】:

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

   const document = SwaggerModule.createDocument(
  app,
  new DocumentBuilder()
    .setTitle('API')
    .setDescription('API')
    .setVersion('1.0')
    .addBearerAuth()
    .build(),
    { incliude: [ModuleWhereControllerIs]  }
);

【讨论】:

    【解决方案2】:

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

    如你所见here

    如果您当前使用的是 @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
    • addOAuth2
    • 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);
    

    【讨论】:

    • 这是我的荣幸。
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2023-02-16
    • 2020-05-23
    • 2021-11-27
    • 1970-01-01
    • 2021-07-09
    • 2021-11-14
    • 2020-12-29
    相关资源
    最近更新 更多