「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
相关文章
Java随笔记:Java随笔记
前言
- 上一章我们讲了如何通过
apis()接口扫描
- SpringBoot集成Swagger(三)apis()接口扫描 | Java随笔记 - 掘金 (juejin.cn)
- 还可以通过paths()来过滤接口!
paths()过滤
- 首先看看需要什么参数
+ 
+ 点进去看看
+ 1
2
3
4
kotlin复制代码 public ApiSelectorBuilder paths(Predicate<String> selector) {
this.pathSelector = Predicates.and(this.pathSelector, selector);
return this;
}
①、PathSelectors.any()
- 一样的,我们先举个例子看看
+ 1
2
3
4
5
6
7
8
scss复制代码 @Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.any())
.build();
}
+ 
+ 重启项目看看
+ 
+ 可以看到,包括`error`的controller全部被扫描出来了。
- 然后我们再进
PathSelectors
看看,这是什么玩意?
+ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
typescript复制代码public class PathSelectors {
private PathSelectors() {
throw new UnsupportedOperationException();
}
public static Predicate<String> any() {
return Predicates.alwaysTrue();
}
public static Predicate<String> none() {
return Predicates.alwaysFalse();
}
public static Predicate<String> regex(final String pathRegex) {
return new Predicate<String>() {
public boolean apply(String input) {
return input.matches(pathRegex);
}
};
}
public static Predicate<String> ant(final String antPattern) {
return new Predicate<String>() {
public boolean apply(String input) {
AntPathMatcher matcher = new AntPathMatcher();
return matcher.match(antPattern, input);
}
};
}
}
+ 可以看出一共四个参数:any()、none()、regex()、ant()
+ 由此可以先得出第一个结论:any() 不论啥,我全都要!
- 我们每种都玩一玩,最后再去总结每种的区别。
②、PathSelectors.none()
1
2
3
4
5
6
7
8scss复制代码 @Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.none())
.build();
}重启看结果
很明显了,所有的都没被展示!我全都不要!
③、PathSelectors.regex()
1
2
3
4
5
6
7
8scss复制代码 @Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.regex("^[+-@=](.*?)"))//该正则表示匹配所有
.build();
}重启看结果
1
2
3
4
5
6
7
8scss复制代码 @Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.regex("(/test)([+-@=])(.*?)"))//Java正则表达式以括号分组,表示匹配以/test开头的所有controller
.build();
}重启看结果
这样的话结果就很明显啦!根据正则表达式来过滤哪些需要展示,哪些不需要!
关于正则表达式的话,后面会单独写点文章来玩一玩的!这里按下不表!
④、PathSelectors.ant()
1
2
3
4
5
6
7
8scss复制代码 @Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.paths(PathSelectors.ant("/test-swagger2/**"))//匹配/test-swagger2/开头的所有controller
.build();
}重启看结果
这个也不做过多展示,只提一个小技巧。
当我们项目的mapping以功能划分时:
+ 
+ 即test功能下所有的都被扫描到!
+ 而用户功能我不加进去,那么即不会被扫描到!
总结
- any() // 任何请求都扫描
- none() // 任何请求都不扫描
- regex(final String pathRegex) // 通过正则表达式控制
- ant(final String antPattern) // 通过ant()控制
- 明天带来的就是Swagger的开关怎么玩?如何控制多环境的开关和闭合!
- 以上内容都是个人见解,如有不对,敬请指出!
路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah
本文转载自: 掘金