網關Gateway整合Swagger調用頁面時報錯


寫在前面:記錄一下我在gateway整合swagger時遇到的坑。
一、報錯信息如下:
Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually: xxxxxxxxx

二、尋找問題原因:
一開始遇到這個問題,我去網上百度,百度上描述的原因和解決方案非常的多,我基本嘗試了用各種網上的方案來解決,發現都沒有用。
所以我打算歸於根本,通過根據自己項目上去找到問題的真正原因。
三、問題解決思路:
1、首先我檢查了pom文件,看他是被哪些包依賴了,是不是那些依賴包的一些內容導致的網關中的swagger無法正常運行。
2、暫時沒有發現問題,因為層層依賴關系太多了,一下不好找。
3、接着我繼續調用swagger報錯的接口,仔細查看控制台的報錯信息。
4、在頁面報錯的同時,控制台報錯是Class找不到,一個我沒有引入的依賴。那么我就想着為什么我調用swagger接口會去調用這個我沒有引入的依賴。


5、思考后我發現可能是log-inter這個依賴包所影響的,因為這個日志包是做了aop切面的操作,去攔截請求記錄日志。
6、為了測試是不是這個log-inter依賴導致的問題,我先把依賴給注釋掉,重啟服務。

7、注釋后,發現swagger接口恢復正常,那么說明就是這個包的問題所影響。

8、那么我們現在就是解決swagger與這個log-inter沖突的問題,經過我對log-inter里代碼的查看,發現這個日子攔截器有提供注解的方式去忽略攔截。
9、我就開始給我網關swagger配置類接口上添加忽略的注解,並且將log-inter的依賴打開。

10、重啟服務后,測試swagger頁面是否正常。

發現swagger頁面能夠正常打開,這樣便解決了這個問題。


免責聲明!

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



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