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:同一个错误不要犯第二次。