记录一次Status Code:400 Bad Request解决方案及打印错误原因
- 工作小总结
- 时间:2019-01-19 16:01
- 13095人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
下午在调页面的时候,提交一直400.前端修改了js代码。各种查询,都说是因为参数对应不上。错误如下图:
提交信息:
参数不一致?一个一个对应。没问题啊。
参数类型不一致?不好判断。但是可以使用spring mvc的:
@ResponseBody @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(HttpMessageNotReadableException.class) public String messageNotReadable(HttpMessageNotReadableException exception, HttpServletResponse response){ log.error("请求参数不匹配。", exception); return ""; }
打印出的:
根据错误提示,说在salaryways对象中positionType这个对象是数组类型。不对啊。对象中是Int类型。那有可能是前端js处理的时候,传递的数组。
再次仔细查看提交数据:
我艹。确实是数组。修改后,测试ok.
网上其他遇到400解决方案:
请求成功示例
下面这张图展现的就是请求成功的情形:
错误原因
在我没有注意到“关键哦~”的关键点时,我还纳闷呢,明明两次的请求都是一样的,为什么一个成功,一个就失败了呢?
哦,后来定位到传输参数异样时,才发现:原来是areaOrSchoolId
的参数没有传过去,而这个参数在服务端又是一个必需项。所以,当前端请求没有传递所必须的参数时,请求就报了 Bad Request
的错误了!
综上所述:
出现了 Status Code:Http 400 Bad Request
错误的一种原因就是:参数匹配。包括以下两方面:
请求时没有传递必须的参数;
传递的参数类型不匹配,比如
areaOrSchoolId
需为int
型,若传到后台的是string
型则也会出现类似的错误。
当然了,这只是400
错误的一种表现形式。记录于此,给遇到同样问题的伙伴。
上一篇: mybatis批量update的时候失败,解决办法
下一篇: mysql 字段包含某个字符的函数