SpringBoot踩坑記(HTTP 400 錯誤)


HTTP 400 錯誤

復現錯誤

ajax請求后台數據時有時會報 HTTP 400 錯誤 - 請求無效 (Bad request);出現這個請求無效報錯說明請求沒有進入到后台服務里;
原因:
1)前端提交數據的字段名稱或者是字段類型和后台的實體類不一致,導致無法封裝;
2)前端提交的到后台的數據應該是json字符串類型,而前端沒有將對象轉化為字符串類型;

錯誤代碼

$.ajax({
        type: "POST",
        url: "news/newsAdd",
        data: data,
        dataType:'json',
        contentType:"application/json",
        success: function(data, textStatus, jqXHR) {
            console.log(data)
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus && textStatus == "timeout") {
                confirm("網絡超時,請重試!");
            } 
        }
    }
);

 

原因:直接將json作為參數傳入

參考  spring @RequestParam, @RequestBody Map注入注意事項

  • @RequestBody需要把所有請求參數作為json解析,因此,不能包含key=value這樣的寫法在請求url中,所有的請求參數都是一個json
  • 直接通過瀏覽器輸入url時,@RequestBody獲取不到json對象,需要用java編程或者基於ajax的方法請求,將Content-Type設置為application/json
  • @RequestParam參數中包含Map時,不要再寫其他參數了,否則,map都會包含進去。

更正代碼

$.ajax({
        type: "POST",
        url: "news/newsAdd",
        data: JSON.stringify(data),
        dataType:'json',
        contentType:"application/json",
        success: function(data, textStatus, jqXHR) {
            console.log(data)
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus && textStatus == "timeout") {
                confirm("網絡超時,請重試!");
            } 
        }
    }
);

 

參考:JSON.stringify()的用法

@RequestBody的使用

 

 

good luck!

 

 


鏈接:https://juejin.im/post/5cd0ea2f6fb9a032076c1ca5


免責聲明!

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



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