HTTP Reponse 400

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingyundezuoan/article/details/82312541

HTTP Reponse 400


异常场景

  • A 服务通过HTTP方式请求B服务的接口
  • A 中参数类与 B 中接收请求的参数类不同,类中属性数量有差别
  • A 中参数类中通过 @JsonIgnoreProperties(ignoreUnknown = true) 注解
  • B 中HTTP 接口配置接收数据类型为JSON
  • @RequestMapping(value = "xxx", produces = MediaType.APPLICATION_JSON_VALUE,
    consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
  • A 中接收到 B 中接口的返回值 400 ,说明请求是成功的

异常分析

  • 请求是突然发生的,查看代码提交记录,定位问题
  • 发现如果让A 与 B 中不同的属性字段相同,就不会报错;当然,去掉本次新增的代码后问题也会解决;
  • 临时方案让A 与 B 中属性一致

异常定位

  • 项目服务化拆分,A 与 B 项目本身引用的依赖规划都不是很合理,以JSON为例,GSON / FastJson / JackSon 等依赖都有已用;使用方式也很多,没有统一规范
  • 问题的原因在于 B 项目中的 JackSon 依赖的版本被升级到 2.X版本,B中接收请求A的请求JSON串,在JSON转为B中参数类时异常,接口无响应
  • 本次查看maven依赖:mvn dependency:tree -Dverbose > tree.txt ;

问题解决

  • 恢复 JackSon 的引用版本;使用现有版本完成新增的功能

猜你喜欢

转载自blog.csdn.net/mingyundezuoan/article/details/82312541