我在Spring Boot(版本1.5.9.RELEASE)项目中使用了swagger 2.0。Swagger可以正常工作,但是现在文档有数百个api,我想重定向文档到不同的URL。
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket postsApi() { return new Docket(DocumentationType.SWAGGER_2).groupName("public-api") .apiInfo(apiInfo()).select().paths(postPaths()).build(); } private Predicate<String> postPaths() { return or(regex("/api/posts.*"), or(regex("/api/.*"), regex("/secure/api/.*"))); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("Swagger API") .description("Swagger Integration with Spring Boot") .termsOfServiceUrl(null) .license(null) .licenseUrl(null).version("1.0").build(); } }
请提出任何建议。提前致谢。
最后,我按照以下代码段的URL将这些api分为几类,为设置创建三个组,为产品创建另一个,最后一个包含除设置和产品之外的所有其他文档。
@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)).+\\/.*")); }