动态更改服务器的网址

时间:2018-11-20 16:13:16

标签: swagger-ui openapi

我有一个为多个客户端部署的Web应用程序(让我说client1.com,client2.com和client3.com)。我使用OA3规范编写了REST API文档。

我有index.yaml,如下所示:

openapi: 3.0.0

info:
  title: REST API
  description: REST API
  version: 0.0.1

servers:
  - url: http://client1.com/api
  description: Something ...

tags: ...

和标准Swagger-ui index.html

// Begin Swagger UI call region
const ui = SwaggerUIBundle({
  url: "docs/index.yaml",
  dom_id: '#swagger-ui',
  deepLinking: true,
  presets: [
    SwaggerUIBundle.presets.apis,
    SwaggerUIStandalonePreset.slice(1)
  ],
  plugins: [
    SwaggerUIBundle.plugins.DownloadUrl
  ],
  layout: "StandaloneLayout"
});
// End Swagger UI call region
window.ui = ui;

我的问题是我需要根据部署应用程序的位置和客户端来更改servers.url,以便每个客户端都可以在自己的服务器上测试API,而我不希望客户端彼此了解并了解彼此在REST API文档中。

我如何“动态”更改/设置server.url?一种“解决方案”解决方案是为每个客户端和硬编码server.url复制index.yaml,但我肯定有更好的方法,我看不到/不知道。

编辑#1:给出重复的答案无济于事,因为当我将服务器设置为

servers: 
  - url: /api

swagger ui仍然指向http://localhost:8080/api/,但是我的应用程序网址为http://localhost:8080/myapp/。我可以设置servers: - url: /myapp/api,但这是index.yaml中的硬编码值,对我不起作用。我需要像“可配置”的服务器URL。 但是还是要谢谢

编辑#2:我当前的解决方法是使用服务器端代码处理yaml。在index.yaml中,我有:

servers:
  - url: ##INSERT_SERVERS_TAG_HEREapi

,我将##INSERT_SERVERS_TAG_HERE替换为myapp.client.com/。但我仍在寻找更好的解决方案。

0 个答案:

没有答案