Swagger не смог отсканировать динамическую природу создания url Джерси

Я работал над проектом, который использует следующий технический стек на своем сервере:

  1. Spring-Core (не MVC)
  2. Jax-RS (Джерси 1.19)

Для документирования API нам посоветовали использовать Swagger2. Следуя одной из предыдущих версий документации, я смог отсканировать пакеты и был удовлетворен файлом swagger.json, который он дал.

Чтобы уменьшить царапины на голове, я использовал swagger-maven-plugin (v 3.1.7) и упомянул тег. Например,

<locations> <location>com.example.business.rest.PresidentController</location> <location>com.example.business.rest.ElectionsController</location> </locations>

Теперь, чтобы дать вам представление о том, как организован мой проект для URL-адресов API, выполните следующие действия:

  1. Существует RestController на уровне "Application", где базовый путь URL начинается как "v1/ foo" или "v1/ bar". В этом RestController мы приписываем ссылку на фактический контроллер, находящийся в бизнес-уровне.
  2. Бизнес-уровень - это место, где существуют все остальные API-интерфейсы остальных. Здесь я объявил аннотации @Api, @ApiOperation и @ApiParam от Swagger. Основные операции crud одинаковы для всех API в пакете "Business.Rest".

Реальная проблема: поскольку URL API построен, например, из уровня приложений в направлении уровня бизнеса,

Чтобы получить всех президентов: прикладной уровень RestController.java будет содержать "v1/ presidents", а ссылка на бизнес-уровень будет указана для PresidentController.java.

Кроме того, @Path("/") будет находиться в PresidentController.java. И структура PresidentController.java будет такой же, как ElectionController.java, где будет другой @Path("/"), но это будет для базового URL "v1/ выборы".

Эта динамическая природа построения URL ограничивает Swagger для обновления последнего отсканированного API из его тега местоположения, как упомянуто выше. Поэтому Swagger сканирует PresidentController.java и соответствующий ему @Path вместе с аннотациями @ApiOperation и обновляет документацию до последнего сканирования, т. Е. ElectionsController.java, и, таким образом, не размещает каждую документацию API в отдельном разделе в своем пользовательском интерфейсе.

Я что-то упустил, Помогите?

0 ответов

Другие вопросы по тегам