如何移除Swagger UI中的控制器列表(springfox-swagger-ui 2.8.0)
哈哈,兄弟我太懂你这糟心事儿了!之前用springfox的时候也踩过这个坑——本来只想把那些空落落的控制器标签页删掉,结果手滑加了@ApiIgnore,直接把有用的API文档也搞没了,气得我挠头半天。
别慌,给你几个亲测有效的解决方案,都是针对springfox-swagger-ui 2.8.0(集成Swagger UI 3.7.0)的:
方案1:统一API标签,替换默认控制器分组
这是最常用的办法,把所有API归到一个自定义标签下,让原来的控制器标签直接消失。
你只需要在Swagger配置类里调整Docket的设置,再给每个API方法指定统一的标签就行:
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() // 指定你的控制器包路径,确保包含需要的API .apis(RequestHandlerSelectors.basePackage("com.your.project.controller")) // 过滤需要展示的API路径,比如只留/api开头的 .paths(PathSelectors.ant("/api/**")) .build() .apiInfo(apiInfo()) // 定义一个全局统一标签 .tags(new Tag("核心业务API", "所有业务相关的REST接口文档")); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("你的项目API文档") .description("RESTful API接口说明") .version("1.0.0") .build(); } }
然后在每个控制器的API方法上,用@ApiOperation(tags = "核心业务API")指定标签,这样所有API都会统一归到这个标签下,原来的控制器分组标签就不会再显示了。
方案2:配置Swagger UI隐藏分组/控制器列表
如果方案1还没解决问题,你可以直接调整Swagger UI的显示配置,把那些没用的控制器列表或者分组标签页藏起来:
在SwaggerConfig里再加一个UiConfiguration的Bean:
@Bean public UiConfiguration uiConfiguration() { return UiConfigurationBuilder.builder() // 隐藏左侧模型展开(如果不需要的话) .defaultModelsExpandDepth(-1) .defaultModelExpandDepth(-1) // 隐藏顶部的分组切换栏 .displayOperationId(false) .tagsSorter(TagsSorter.ALPHA) .operationsSorter(OperationsSorter.METHOD) .build(); }
这里的参数可以根据你的需求调整,重点是通过配置让那些空的控制器标签不再显示。
为啥@ApiIgnore不行?
你之前用@ApiIgnore加到控制器上,相当于告诉springfox“忽略整个控制器以及里面的所有API”,所以自然会把有用的文档也删掉,这肯定不是你要的效果。
试试上面的方法,应该能解决你的问题!
内容的提问来源于stack exchange,提问作者cognitio
相关产品推荐
相关产品推荐

