Я развернул веб-сервис, используя 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.
Любые подсказки, каковы лучшие практики и / или с чего начать отладку этой проблемы?