0.背景
調試項目的時候,一個PUT請求提交數據,總是報 400,Bad Request, 后台debug模式也進不了斷點,后來搜索了很多才解決。本文只說我遇到的實際問題和解決辦法。
1.問題原因及解決辦法
網上有很多解決辦法,我最后排查發現的是
原因1:提交的數據和后台實體類不對應。
舉例來說:你后台定義了要給實體類,假如你后台的實體類有三個字段
private String Name;
private String Number;
private Date time;
這個時候你前台提交的數據對象應該像下面這樣json形式。
{
Name:"張三",
Number:"12",
time:"2021-12-12"
}
這個時候你可以正常提交數據,哪怕你提交的數據少了兩個也沒問題。但是絕對不能提交和實體類不一樣的數據。比較在這個數據對象中提交了一個字段 Class。那么就會報錯400。因為后台實體類中沒有對應到Classz這個字段。
原因2:數據格式不對。
這個也是我實際遇到的,特別后台是時間類型時,因為沒有前台沒有校驗時間或者傳入的時間后台的時間類型不識別,也會報這個錯。
比如,后台的time 字段是Date類型,前台time傳遞過去是“2021-12-12 12:32” 這種形式,后台就會報錯400。如果你改成 “2021-12-12”那么后台就正常接收,同時也試過了,傳遞時間戳也能正常接收。
建議提前做好涉及規划等,或者用代碼生成軟件,這樣這些小細節問題都可以避免掉。
PS:同一個錯誤不要犯第二次。