- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- Spring集成Swagger常見(jiàn)錯誤及解決辦法
在當下幾乎所有的公司都采用了前后端分離的開(kāi)發(fā)模式,Swagger作為了在A(yíng)PI在線(xiàn)文檔工具,幾乎是后端開(kāi)發(fā)的必備組件,最近公司的有個(gè)項目,在項目啟動(dòng)和打開(kāi)Swagger頁(yè)面時(shí)候,后端產(chǎn)生了大量的異常日志,雖然不影響現在的正常啟動(dòng),不過(guò),每次看到大量的異常日志,對于有代碼潔癖的我,不能忍。于是乎今天抽了個(gè)時(shí)間把以下這些問(wèn)題解決了,解決后再看日志,簡(jiǎn)直不能再爽歪歪啦~ 下面對問(wèn)題以及解決的辦法做個(gè)記錄。
異常描述:No enum constant org.springframework.web.bind.annotation.RequestMethod.Get
項目啟動(dòng)的時(shí)候,后臺日志報如下異常:
根據異常棧,能看出是springfox-swagger-common執行OperationHttpMethodReader.apply()方法是拋出來(lái)的,分析日志 RequestMethod.Get 沒(méi)有對應的enum,通過(guò)檢查Controller中RequestMethod,發(fā)現了問(wèn)題所在:
枚舉類(lèi)中method方法都是大寫(xiě), 而我的代碼中將method寫(xiě)成了:
導致了在獲取enum類(lèi)型的時(shí)候,匹配不上拋出異常。
將httpMethod = "Get" 給成 "GET"即可。其實(shí)原來(lái)就很好奇為什么httpMethod后添加的方法名稱(chēng)是大寫(xiě),當時(shí)也沒(méi)有深入的去研究,正好借此機會(huì )知道背后的原因,這樣在開(kāi)發(fā)過(guò)程中才能避免很多坑~~
異常描述:java.lang.NumberFormatException:For input string:""
項目起來(lái)后,訪(fǎng)問(wèn)swagger-ui.html頁(yè)面后,接口文檔可以正常展示和使用,不過(guò)后臺會(huì )出現異常的日志:
看日志,swagger-models這個(gè)包中的AbstractSerializableParameter.getExample()方法的時(shí)候出現異常了,此外還有一條WARN日志,Illegal DefaultValue null for parameter type integer,意思是:有個(gè)默認值是空字符串的變量轉換成Integer類(lèi)型時(shí)異常。
通過(guò)全局檢索:Illegal DefaultValue,查看如下:
發(fā)現example只判斷的null這種情況,當example如果為空字符串的話(huà),照樣往下執行,Long.valueOf(example)就是拋出異常,奔潰的心,好想把他的源碼改掉呀~
分析了下maven的包依賴(lài):
發(fā)現swagger-models的版本為 1.5.20,果斷去mvnrepository上去尋找有么有新的包修復過(guò)這個(gè)bug:
發(fā)現最新的版本 1.6.2,果斷換成最新版本:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency> <!-- 解決 Illegal DefaultValue null for parameter type integer --> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.6.2</version> </dependency>
看下源碼:
發(fā)現這個(gè)bug已經(jīng)修復啦,哈哈哈哈
以上就是Spring集成Swagger常見(jiàn)錯誤及解決辦法的詳細內容,更多關(guān)于Spring集成Swagger常見(jiàn)錯誤的資料請關(guān)注腳本之家其它相關(guān)文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站