• 【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数据之后会接收到数据

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

  • 相关阅读:
    LeetCode:字符串篇
    俄罗斯方块
    IB成绩不理想,还想读名校,有其他途径吗?
    [树形dp]Crystalfly 2021年ICPC南京站H
    1134 Vertex Cover
    心得两则
    推特营销|推特群推你有无限可能
    LeetCode链表问题——19.删除链表的倒数第N个节点(一题一文学会链表)
    LC-992. K 个不同整数的子数组(滑动窗口)
    编程每日一练(多语言实现)基础篇:求总数问题
  • 原文地址:https://blog.csdn.net/cherry5230/article/details/137919282