這兩天在搭建項目用到了swagger,遇到了不少坑,可以說是完全沒必要踩到的坑,卻讓我浪費了許久時間,確實很難受,記錄下來,以此為教訓!
先說明下: 版本號為:springboot2.x、swagger2.7+ 我遇到了很多問題,第一個:
上面那個錯表示swagger沒有配置好,即配置問題
找原因:找swagger-ui.html 請求分發過程, 沒有找到swagger-ui的hmtl,返回error,,緊接着,看一下頁面報404的接口,去掉null訪問一下,
訪問成功!
於是在springmvc的源碼上定位該接口的bean,即public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
定位到該接口,查看其源碼,即
於是在請求一下,得到它的數據,以及返回值!這個時候得到了一個關鍵的線索點,它的返回值!!! 在查看了項目的統一返回值包裝類之后恍然大悟,這特么是我的封裝類將swagger本身的返回值結構打破了,所以swagger沒有解析到 正確的返回值,所以會報這個錯,藍瘦~
如下,是我們的返回值和swagger自己定義的返回值:
結果已經很明了了!就是我們的包的作用范圍的原因,應該縮小一下范圍,即加入下面代碼: java @RestControllerAdvice(basePackages = "com.xxxxx.controller")
得此解決!
當然 還有另外一個原因,就是swagger的配置問題,一定要掃描當前controller的包,不然也是沒有