URL серверов динамического изменения - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть веб-приложение, которое я разворачиваю для нескольких клиентов (скажем, 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/.Но я все еще ищу лучшее решение.

...