記一次SpringFox 3(別稱:Swagger3)集成到SpringBoot項目404錯誤解決


  本人菜鳥弱雞一枚,最近入手一個新項目,在我看來很高大上,分布式、微服務的SpringBoot項目。在這個項目中我負責單獨開發一個模塊,開發完后與同事聯調結果發現沒有接口文檔,沒辦法,上swagger。

  swagger是一個在線文檔,之前用過別人集成的,感覺還不錯,這次自己集成到項目中。不過,swagger2已經被官方停維了,所以我決定采用最新的swagger 3,也就是SpringFox 3。根據文檔,引入了SpringFox后,配置好SpringFox后,興致沖沖的啟動項目,訪問地址:http://IP:端口/項目上下文/swagger-ui/,結果訪問不了

 

 

   這是個難題啊,沒得說,找度娘,網友很給力,有很多回答,不過,看了很多回答記錄,總的來說就是幾條:

  • 配置錯誤,導致swagger未啟動
  • 版本變更大,頁面路徑錯誤
  • 攔截器攔截了swagger請求

  大概都是這三種吧,由於springFox 3沒找到太多資料,現在記錄下我的解決方法:

  問題一、SpringFox是springboot的swagger,所以它的配置不多,只要在springboot啟動文件App.java中加入@EnableOpenApi注解即可

 

 

   其他的東西都是可選配置的,目前我們先要確保swagger能訪問才是關鍵。所以其他的配置先不管

  問題二由問題一可知,頁面之類的不用管,所以這個問題排除,當然SpringFox 3對於JDK有版本要求,必須是JDK 8以上才行

  問題三有可能,但經過查找這個不是我的問題,當然,如果是解決方法也很簡單,將SpringFox的相關路徑/swagger-resources/、/swagger-ui/等配置忽略不攔截就可以了。

  三個問題都不是我的問題,還有什么問題呢?經過一翻跟蹤,我找到了一個特殊的注解:@ControllerAdvice,統一處理的注解,我....,這年頭還有人用@ControllerAdvice不給范圍的,這有點坑啊,試下給@ControllerAdvice加上范圍后,重啟,訪問:http://IP:端口/項目上下文/swagger-ui/,成功,swagger成功出現。

  總結,SpringFox主要問題排除點在於1、啟動時的注解@EnableOpenApi,2、地址是否被過濾器攔截,3、是否有配置全局的@ControllerAdvice,並對返回結果的結構進行重構處理,4、頁面的訪問路徑是否是:http://IP:端口/項目上下文/swagger-ui/ 或 http://IP:端口/項目上下文/swagger-ui/index.html 。就這四點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM