SpringBoot整合Swagger(三)paths()介面過濾 | Java隨筆記
「這是我參與11月更文挑戰的第20天,活動詳情檢視:2021最後一次更文挑戰」
相關文章
Java隨筆記:Java隨筆記
前言
- 上一章我們講了如何通過
apis()介面掃描
- SpringBoot整合Swagger(三)apis()介面掃描 | Java隨筆記 - 掘金 (juejin.cn)
- 還可以通過paths()來過濾介面!
paths()過濾
-
首先看看需要什麼引數
- 點進去看看
public ApiSelectorBuilder paths(Predicate<String> selector) { this.pathSelector = Predicates.and(this.pathSelector, selector); return this; }
①、PathSelectors.any()
-
一樣的,我們先舉個例子看看
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .paths(PathSelectors.any()) .build(); }
- 重啟專案看看
- 可以看到,包括
error
的controller全部被掃描出來了。
-
然後我們再進
PathSelectors
看看,這是什麼玩意?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()
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .paths(PathSelectors.none()) .build(); }
- 重啟看結果
- 很明顯了,所有的都沒被展示!我全都不要!
③、PathSelectors.regex()
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .paths(PathSelectors.regex("^[[email protected]=](.*?)"))//該正則表示匹配所有 .build(); }
- 重啟看結果
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .paths(PathSelectors.regex("(/test)([[email protected]=])(.*?)"))//Java正則表示式以括號分組,表示匹配以/test開頭的所有controller .build(); }
- 重啟看結果
- 這樣的話結果就很明顯啦!根據正則表示式來過濾哪些需要展示,哪些不需要!
- 關於正則表示式的話,後面會單獨寫點文章來玩一玩的!這裡按下不表!
④、PathSelectors.ant()
-
@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
「其他文章」
- 2021已逝,2022我來了 | 2021年終總結
- SpringBoot整合Swagger(十一)常用註解介紹 | Java隨筆記
- SpringBoot整合Swagger(十)常用註解介紹 | Java隨筆記
- 將數字變成 0 的操作次數 | LeetCode刷題筆記
- SpringBoot整合Swagger(九)給你的Swagger換個面板吧 | Java隨筆記
- SpringBoot整合Swagger(八)@ApiModelProperty()註解一擼到底 | Java隨筆記
- SpringBoot整合Swagger(七)@ApiModel()註解一通百通 | Java隨筆記
- SpringBoot整合Swagger(六)玩轉groupName()分組 | Java隨筆記
- SpringBoot整合Swagger(五)動態配製Swagger的開關 | Java隨筆記
- SpringBoot整合Swagger(三)paths()介面過濾 | Java隨筆記
- 隨機數實現撲克牌洗牌 | Java隨筆記
- 線上出問題?遠端DeBug會嗎?| Java隨筆記
- Widows和Linux下如何安裝MySQL | MySQL(前傳)
- Ubuntu新增root使用者和開啟遠端登陸 | Java隨筆記
- Ubuntu16.04上安裝jdk1.8 | Java隨筆記
- Java函式和陣列 | Java隨筆記
- 程式設計師最喜歡的一句話?當然是New物件啦~ | Java隨筆記
- MyBatis中使用foreach批量插入並且返回自增id | MyBatis系列(小技巧一)
- 操作資料庫和資料表 | MySQL(一)基礎
- @Value註解讀取配置檔案中的內容 | Java隨筆記