我有为多个客户端部署的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?一种“解决方案”解决方案是为每个客户端和hardcode 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/
。但我仍在寻找更好的解决方案。
我有为多个客户端部署的Web应用程序(让我说client1.com,client2.com和client3.com)。我使用OA3规范编写了REST API文档。我有index.yaml,看起来像:...
您可以通过编写插件在渲染规范json之前对其进行更改