Swagger OpenAPI: Как реализовать отдельный пользовательский интерфейс для каждого пакета?

#java #kotlin #swagger #openapi

Вопрос:

У меня есть 3 API, например /api /internal (для внутренних служб) и /admin (для администрирования), каждый из них в отдельном пакете:

 controller  |  --api  |  --internal  |  --admin  

Чем, мне нужно реализовать отдельный пользовательский интерфейс Swagger для каждого пакета с отдельным путем, например:

 http://localhost:8080/api/swagger-ui.html http://localhost:8080/admin/swagger-ui.html http://localhost:8080/internal/swagger-ui.html  

только с контроллерами, расположенными по определенному пути. На данный момент у меня есть простая фасоль, вот так:

 @Bean fun openApi(): OpenAPI = OpenAPI().info(Info().title("Test title"))  

Ответ №1:

Решение:

 @Bean  fun openApi(): OpenAPI = OpenAPI().info(Info().title("Test title"))  @Bean fun adminApi(): GroupedOpenApi =  GroupedOpenApi  .builder()  .group("admin")  .pathsToMatch("/admin/**")  .build()  @Bean fun internalApi(): GroupedOpenApi =  GroupedOpenApi  .builder()  .group("internal")  .pathsToMatch("/internal/**")  .build()  @Bean fun apiApi(): GroupedOpenApi =  GroupedOpenApi  .builder()  .group("api")  .pathsToMatch("/api/**")  .build()  

чем, вы можете выбрать группу таким образом:

введите описание изображения здесь

и будут отображаться только конечные точки из пути группы.