我有一个为多个客户端部署的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/
。但我仍在寻找更好的解决方案。