【Bug记录】@RequestBody参数属性为空的问题

1、问题发生背景

        使用postman调用之前测试成功的接口,再进行项目拆分,重构之后,接口突然不通了,排查了很久,以为是框架调整,导致出了问题。

2、问题发生的原因

        经过一系列的排查,排查详细过程就不写了,心累,人麻了。。发现接口的@RequestBody 包导入错了,因为框架整合了SwaggerUI,导致迁移代码的时候自动导入了swagger包下的RequstBody类,正确的因该引用spring annotation包下的RequestBody,下面记录一下排查过程。

3、排查过程

        1)postman调用post接口,Header也配置了Content-Type=application/json。

        2)接口使用swagger包 下的@RequestBody,参数属性值没有映射上,一开始以为是lombok没生效导致的。
        3)然后尝试使用swaggerUI调用,打开浏览器控制台,接口的参数是拼接在url后面的,通过swagger调式是没问题的。
                https;//xxx/query?keyword=1&pageNum=1&pageSize=10

        4)后来翻阅@RequestBody这个注解,发现它不止一个包下有,仔细查阅资料,发现Spring下的RequestBody才会把请求的body参数,转换成所需要的json,映射到实体类上。

        5)至此,换下包,问题解决

                第一:  io.swagger.v3.oas.annotations.parameters.RequestBody
                这个是swagger的依赖,当引入这个注解后在postman测试传入json数据后会接受不到

                参数,让传入的参数都为空,但是在swagger里面可以映射到参数

                第二: org.springframework.web.bind.annotation
                这个是web的依赖,用这个依赖再传入json数据之后会接收到数据

切记!!!应该用第二个依赖!!!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值