如何在 Swagger UI 中隐藏服务器描述?

问题描述 投票:0回答:2

我有一个包含多个服务器的 OpenAPI 3.0 定义:

servers:
- url: https://development.gigantic-server.com/v1
  description: Development server
- url: https://staging.gigantic-server.com/v1
  description: Staging server
- url: https://api.gigantic-server.com/v1
  description: Production server

当此定义在 Swagger UI 中呈现时,“服务器”下拉列表将显示每个服务器的描述:

Server descriptions in Swagger UI

是否可以从此下拉列表中隐藏服务器描述?

yaml swagger-ui openapi swagger-editor oas
2个回答
1
投票

Swagger UI 始终显示服务器

description
(如果提供),这是硬编码的:
https://github.com/swagger-api/swagger-ui/blob/master/src/core/plugins/oas3/components/servers.jsx#L85

作为解决方法,您可以在加载 API 定义后动态修改它并删除服务器描述。为此,请编辑 Swagger UI 的

swagger-initializer.js
index.html
文件,并将以下
onComplete
函数添加到
SwaggerUIBundle
初始化代码中:

  const ui = SwaggerUIBundle({
    url: "https://path/to/your/openapi.json",
    ...

    onComplete: function() {
      let spec = ui.specSelectors.specJson().toJS();
      let servers = spec.servers || [];

      for (let i in servers) {
        servers[i].description = ""
      }

      ui.specActions.updateJsonSpec(spec);
    }
  })

1
投票

他们没有提供任何选项来在其他地方替换该服务器的

description
,但他们提到
description
在表示服务器的对象的 swagger 规范中是可选的。

Swagger UI 尚未为此提供任何渲染选项。

description

的最佳用法是用一个词来定义,例如
生产开发apistaging等..

如果您确实不想加入下拉列表,则可以将其从服务器列表中删除。

servers: - url: https://development.gigantic-server.com/v1 - url: https://staging.gigantic-server.com/v1 - url: https://api.gigantic-server.com/v1


我写这部分是为了供您参考,关于如何使用

oas-servers

我观察了您的服务器网址,这些可以轻松地在单个网址中定义,如何?使用

服务器变量

servers: - url: https://{environment}.gigantic-server.com/{version} variables: environment: enum: - 'development' - 'staging' - 'api' version: enum: - 'v1'
希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.