У меня есть веб-приложение, которое я разворачиваю для нескольких клиентов (скажем, client1.com, client2.com и client3.com).Я написал документацию REST API, используя спецификацию OA3.
У меня есть 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;
Моя проблема заключается в том, что мне нужно сменить сервер.url в зависимости от того, где и для какого клиента я развертываю приложение, чтобы каждый клиент мог тестировать API на своих собственных серверах, и я не хочу, чтобы клиенты видели друг друга и знали друг о друге в документах REST API.
Как я могу «динамически» изменить / установить server.url?Одним из "обходных" решений является копирование index.yaml для каждого клиента и жесткого кода server.url, но я уверен, что есть лучший способ, о котором я не вижу / не знаю.
Редактировать # 1: дать повторяющийся ответне помогает, потому что когда я устанавливаю серверы на
servers:
- url: /api
Swagger UI по-прежнему указывает на http://localhost:8080/api/
, но мой URL-адрес приложения 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/
.Но я все еще ищу лучшее решение.