Сбой маршрутизации с несколькими URL-адресами сервера - PullRequest
2 голосов
/ 15 апреля 2019

Я развернул веб-сервис, используя Connexion и OpenAPI 3.0 . Я запускаю его локально для тестирования отладки и впоследствии развертываю на рабочем сервере.

Я борюсь с тем, как правильно указать URL-адреса сервера в файле OpenAPI. Все работает, как ожидалось, когда я укажу это:

servers:
  - url: http://localhost:5000/basepath/v1

Я могу проверить это простым вызовом:

curl -X POST "http://localhost:5000/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."

То же самое работает на производственном сервере:

curl -X POST "http://myserver.net/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."

Однако я хотел бы указать URL-адрес рабочего сервера, чтобы использовать все возможности OpenAPI (например, пользовательский интерфейс для генерации вызовов cURL). Поэтому я добавляю еще один URL:

servers:
  - url: http://localhost:5000/basepath/v1
  - url: http://myserver.net/basepath/v1

Однако когда я вызываю службу, конечная точка больше не обнаруживается на рабочем сервере:

curl -X POST "http://myserver.net/basepath/v1/endpoint" -H "accept: application/json" -H "Content-Type: application/json" -d "..."
{
  "detail": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
  "status": 404,
  "title": "Not Found",
  "type": "about:blank"
}

Я много раз проверял, чтобы убедиться, что звонки идентичны, и что добавленная запись URL была единственным изменением.

Когда я удаляю строку localhost, она не работает ни локально, ни на рабочем сервере.

Я считаю, что это связано с тем, как Connexion считывает спецификацию API и как он настраивает маршрутизацию. Документация об этом очень скудна, и я не смог найти других примеров о наилучшей практике с Connexion и OpenAPI 3.0.

Любые подсказки, каковы лучшие практики и / или с чего начать отладку этой проблемы?

...