Swagger не смог отсканировать динамическую природу создания url Джерси
Я работал над проектом, который использует следующий технический стек на своем сервере:
- Spring-Core (не MVC)
- 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, выполните следующие действия:
- Существует RestController на уровне "Application", где базовый путь URL начинается как "v1/ foo" или "v1/ bar". В этом RestController мы приписываем ссылку на фактический контроллер, находящийся в бизнес-уровне.
- Бизнес-уровень - это место, где существуют все остальные 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 в отдельном разделе в своем пользовательском интерфейсе.
Я что-то упустил, Помогите?