Swagger OpenAPI:如何为每个包实现单独的 UI?

Swagger OpenAPI: How to implement separate UI for each package?

我有 3 个 API,例如/api/internal(用于内部服务)和 /admin(用于管理),每个都在单独的包中:

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

然后,我需要为每个具有单独路径的包实现单独的 Swagger UI,例如:

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

只有控制器,位于特定路径。 现在,我有简单的 bean,像这样:

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

解决方案:

@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()

那么,你可以这样选组:

并且只应出现组路径中的端点。