HTTP 400 Bad Request问题的解决
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:同一个错误不要犯第二次。