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

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

  • 相关阅读:
    达人评测 锐龙r7 6800u和r5 6600h差距 r76800u和r56600h对比
    【云原生之k8s】k8s资源限制以及探针检查
    小猫打螃蟹-第10届蓝桥杯Scratch省赛真题第2题
    Java反射
    mysql 练习3
    八、class 与 style 绑定(1)
    保姆级 C++ 学习路线
    计算机毕业设计(附源码)python中小学在线考试系统
    JS数据类型判断方式总结
    PDF编辑和OCR文字识别工具ABBYY FineReader PDF
  • 原文地址:https://blog.csdn.net/cherry5230/article/details/137919282