記另類Request method 'GET' not supported


一般遇到Request method 'GET' not supported這種問題,大家都會找相應controller下的具體方法,把get改為post之類。但是我這次是在訪問靜態資源,static下的html是遇到的。

說下解決思路,之前是好好的,突然同事說靜態資源無法訪問,控制台異常如下:


值得留意的有幾點:1、PageNotFound:215;2、Request method 'GET' not supported;3、DefaultHandlerExceptionResolver:189 - Resolved exception caused by Handler execution: org.springframework.web.HttpRequestMethodNotSupportedException(這點應該是前后兩個部分需要注意的)。

沒辦法出現了問題就要處理,首先,直接百度,主要集中在Request method 'GET' not supported加html springboot一起搜索,我這是springboot項目,把那些xml配置文件相關的解答先給排除。還真在網上搜到一篇跟這個問題幾乎一模一樣的,stack overflow上的,老外的問題回答肯定專業。看完后上面說是@RequestMapping(也好像是項目啟動處的配置文件,具體記不清了)的url里可能只有一個/,后面遇到問題的還真找到了,在自己相應的位置加上具體一些路徑就OK了。於是按照這種思路我開始整個項目搜索每個接口,根本就沒有這種情況。

后來按照這個問題搜索加載不到static下的html,這時主要處理針對項目的入口,如圖所示兩處位置,


WebMvcConfigurerAdapter是spring給出的一些默認配置,如靜態資源默認最優先訪問resources下的static里的文件(html),所以我猜測可能是我哪里的配置影響了這個功能(之前這種配置一直是好的)。於是就開始瘋狂搜索各種解決方案,這個又搗鼓了兩天的時間,還是沒搞定,把人逼瘋的節奏。

前天晚上想到了另外一種可能,引用的jar包版本沖突,熟悉springboot的朋友都知道,不同版本沖突的嚴重性,可是我最近沒有更新過pom里的東西。不管這些了,先改下boot的版本,升級到目前的最新版。下載了半天,啟動后依然這個異常,其他一些引用也改了,同樣不行。好吧,你牛逼,哥放棄了。

這些天是同事把項目恢復到之前的版本來回避這個問題的。昨天晚上我做了下更新,早上同事從git上pull代碼之后問題又出現了。頭疼,再看這個問題,還好他說昨天的代碼是OK的,把昨天的代碼down下來一份,放到本地。上邊說了問題有三點,org.springframework.web.HttpRequestMethodNotSupportedException這個問題之前一直沒看。於是,把這個東西單獨拉出來個引用,設定好版本,我本地maven倉庫里有三個它的版本,而且最新的修改日期也相近。不管他是不是springboot版本里帶的了,拉出來試試。結果版本號一加,整個項目都起不來了。所以,這種解決思路也失敗了。


就這樣放棄很不甘心,總有種挫敗感。沒辦法,把down下來的那份好的代碼一個文件夾一個文件夾的往本地項目中復制。最終確定下來是其中一個類的問題,事情變簡單了,瀏覽該類沒發現異常。使用排除法,先留一個方法,然后一個一個的釋放,直到問題再次出現。最終問題鎖定:



大家注意,這里是name屬性,正常情況下我都是寫的value。問了下同事,他說以前用name的時候跟value沒啥區別,都可能正常進行接口調用。試下了,好吧還真通了。把name改成value后所有的東西都正常了,html也可以正常訪問。@RequestMapping中有8個屬性:


我在網上搜了下,沒找到介紹name的,不管了,反正平時我也沒用過,如果有知道的朋友可以給我留言說明。






免責聲明!

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



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