Quarkus: предоставление нескольких конечных точек OpenApi / Swagger-UI - PullRequest
1 голос
/ 21 января 2020

У меня есть остальные API с некоторыми конечными точками в версии 0. Я хочу заменить текущие конечные точки на более более универсальные c (версия 1, тот же путь, но другая реализация и несовместимые параметры), но необходимо сохранить старые, бегущие некоторое время.

Вопрос: возможно ли в Quarkus предоставить два определения OpenApi и две страницы пользовательского интерфейса Swagger?

В моем проекте я включил зависимость openapi и позволил Quarkus сгенерировать определение OpenApi. Можно ли сгруппировать конечные точки версии 0 для одного определения, а остальные для другого?
Я имею в виду настройку, где можно перейти к example.com/v0/docs/ или example.com/v1/. документы /. Запустить два экземпляра API в разных версиях было бы легко, но я думаю, что это невозможно без изменения порта. Я бы предпочел, чтобы все конечные точки были доступны на одном и том же порту.
К сожалению, я не смог найти пример для этого сценария с quarkus.

Если это невозможно, будет ли хорошей практикой есть конечные точки v0 и v1 в одном определении? Это выглядит странно для меня. Но, возможно, это только я.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Насколько я понимаю, ответ - нет.

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

Но : поскольку Quarkus является «контейнерами первыми», вы должны иметь возможность развертывать v0 и v1 в разных контейнерах, прослушивая к разным портам, но объединяются в одну и ту же структуру URL вышестоящим веб-сервером, таким как Apache или NGINX.

Наличие обеих версий в одном приложении Quarkus, похоже, вызывает много проблем, например, по поводу управления версиями вашего приложения. правильно.

0 голосов
/ 21 января 2020

Мне было бы странно, если бы мне нужно было искать новую версию конечной точки в совершенно другом пользовательском интерфейсе / файле. В конце концов, это тот же сервис.

Имхо, типичные подходы таковы:

  1. либо сохраните старую службу как есть и запустите ее как старую версию, запустите новую службу отдельно (и в какой-то момент переключите старую службу) выкл.)
  2. рассмотрите это один и тот же сервис с некоторыми устаревшими конечными точками и поместите все в одну и ту же спецификацию c. Если вы хотите сгруппировать старые конечные точки отдельно, вы можете использовать для этого метки. https://swagger.io/docs/specification/grouping-operations-with-tags/
...