HTTP Reponse 400

本文介绍了一个HTTP 400错误的问题案例,详细分析了A服务调用B服务时因参数类不匹配导致的异常现象,并给出了定位及解决过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 的引用版本;使用现有版本完成新增的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值