前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一次Status Code:400 Bad Request解决方案及打印错误原因

记录一次Status Code:400 Bad Request解决方案及打印错误原因

作者头像
凯哥Java
发布2019-06-28 17:27:18
43.2K0
发布2019-06-28 17:27:18
举报
文章被收录于专栏:凯哥Java凯哥Java

下午在调页面的时候,提交一直400.前端修改了js代码。各种查询,都说是因为参数对应不上。错误如下图:

c63221c5633f0a4111499d76655ead52.png
c63221c5633f0a4111499d76655ead52.png

提交信息:

55bcf263bac9bc9f4a6f5c5aac81c6b3.png
55bcf263bac9bc9f4a6f5c5aac81c6b3.png

参数不一致?一个一个对应。没问题啊。

参数类型不一致?不好判断。但是可以使用spring mvc的

代码语言:javascript
复制
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(HttpMessageNotReadableException.class)
public String messageNotReadable(HttpMessageNotReadableException exception, HttpServletResponse response){
    log.error("请求参数不匹配。", exception);
    return "";
}

打印出的:

4adaa29b23f1bd9fb5ac08cd1b9e007e.png
4adaa29b23f1bd9fb5ac08cd1b9e007e.png

根据错误提示,说在salaryways对象中positionType这个对象是数组类型。不对啊。对象中是Int类型。那有可能是前端js处理的时候,传递的数组。

再次仔细查看提交数据:

1a799c8f4c67fc67f07ecfcad31927ea.png
1a799c8f4c67fc67f07ecfcad31927ea.png

我艹。确实是数组。修改后,测试ok.

网上其他遇到400解决方案:

请求成功示例

下面这张图展现的就是请求成功的情形:

错误原因

在我没有注意到“关键哦~”的关键点时,我还纳闷呢,明明两次的请求都是一样的,为什么一个成功,一个就失败了呢?

哦,后来定位到传输参数异样时,才发现:原来是areaOrSchoolId 的参数没有传过去,而这个参数在服务端又是一个必需项。所以,当前端请求没有传递所必须的参数时,请求就报了 Bad Request 的错误了!

综上所述:

出现了 Status Code:Http 400 Bad Request  错误的一种原因就是:参数匹配。包括以下两方面:

  1. 请求时没有传递必须的参数;
  2. 传递的参数类型不匹配,比如areaOrSchoolId 需为  int型,若传到后台的是string型则也会出现类似的错误。

当然了,这只是400错误的一种表现形式。记录于此,给遇到同样问题的伙伴。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求成功示例
  • 错误原因
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档