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:同一个错误不要犯第二次。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析