Поддержка нескольких путей в Swagger UI / Spring boot - PullRequest
0 голосов
/ 23 ноября 2018

Я использую swagger 2.0 в проекте загрузки Spring (версия 1.5.9.RELEASE).Swagger работает нормально, но теперь в документации есть сотни API, и я хочу перенаправить документацию по разным URL-адресам. У меня есть конфигурация swagger, например, blow.Заранее спасибо.

1 Ответ

0 голосов
/ 22 декабря 2018

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

    @Bean
    public Docket swaggerSettingsApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("Settings")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xyz"))
                .paths(regex("/secure/api/v1/settings/.*"))
                .build()
                .apiInfo(new ApiInfoBuilder().version("1.0").title("Settings API").build())
                .globalOperationParameters(operationParameters());
    }

    @Bean
    public Docket swaggerProductApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("Product")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xyz.modules.v1"))
                .paths(productPaths())
                .build()
                .apiInfo(new ApiInfoBuilder().version("1.0").title("Product API").build())
                .globalOperationParameters(operationParameters());
    }

    @Bean
    public Docket swaggerModuleApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("Others")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xyz.modules.v1"))
                .paths(postPaths())
                .build()
                .apiInfo(new ApiInfoBuilder().version("1.0").title("Other Modules API").build())
                .globalOperationParameters(operationParameters());
    }

      private Predicate<String> postPaths() {
        return or(regex("^(?=\\/secure\\/api\\/v1\\/)(?!.*(settings|products)).+\\/.*"));
    }
...