Controller接收Postman的raw参数时,属性值全部为空

Controller接收Postman的raw参数时,属性值全部为空

情景再现

复制代码
在进行业务代码的编写过程中,使用Postman等工具调用Controller接口时,发现属性值全部为空

后端代码如下:

Requset对象为:

java 复制代码
public class QuerySkuRequest {
      private String storeCode;
      private String skuOrSn;
      private Integer type;

      // 构造方法 setter/getter 等方法省略
}

Controller:

java 复制代码
@Api(value = "ScanProduct",tags = "扫一扫查询商品详情")
@RestController
@Slf4j
@RequestMapping("/xpos/scanProduct")
public class ScanProductDetailsController {

  @RequestMapping(value = "/querySku",method = RequestMethod.POST)
  @ApiOperation(value ="查询商品详情",notes = "查询商品详情")
  public QuerySkuResponse querySkuOnSn(@RequestBody QuerySkuRequest request){

    log.info("扫一扫查询详情信息请求:{}",request);
    // 其他业务逻辑
  }

}

PostMan的Header中设置如下行:

PostMan的Body,选择raw格式:

发送之后request对象的属性结果:

检查问题

  1. 是否是属性值名称填写有问题,无法映射?

直接通过fastjson下的@JSONField(name="")直接写明映射

  1. 更换x-www-form-urlencoded方式请求,是否是忘记写@RequestBody

controller中不写@RequestBody默认是通过表单方式提交,不是采用json,因此需要添加@RequestBody

猜想

是不是@RequsetBody失效?

可能是@RequsetBody注解的问题

解决

最终发现@RequestBody引包错误!

应该要引

java 复制代码
import org.springframework.web.bind.annotation.RequestBody;

而swagger同样有一个同名注解:

java 复制代码
import io.swagger.v3.oas.annotations.parameters.RequestBody

写在同一个地方,都不会报错!!!

在引入了swagger的朋友们一定要注意!

相关推荐
weixin_440730501 小时前
selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告
服务器·selenium·测试工具
啊阿狸不会拉杆9 小时前
《计算机网络-自顶向下方法》3.9 小结 · 课后习题 · Wireshark实验
网络·测试工具·wireshark
PhotonixBay13 小时前
InGaAs微透镜3D形貌怎么测?共聚焦显微镜在光通信的应用实践
功能测试·测试工具·3d·测试标准
Rain的Java大神之路16 小时前
高并发下的热点账户余额扣减:Redis+Lua脚本实现无锁记账
java·spring boot·redis·后端·spring cloud·缓存·lua
测试19981 天前
如何用appium搭建Android自动化测试框架?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
慧都小项1 天前
从 Burp Suite Professional 到 DAST:把 Web 安全测试接入持续 AppSec 的工程化路径
测试工具·web安全·网络安全·burp suite
程序员杰哥2 天前
如何做接口测试?
自动化测试·python·测试工具·职场和发展·测试用例·接口测试·postman
中国软件测试质量协会2 天前
国产性能测试工具:kylinPET高仿真与高并发性能测试技术深度解析——与JMeter、LoadRunner全面对比
测试工具·jmeter
qq_322762752 天前
一个接口从能用到稳定,中间差的到底是什么
服务器·开发语言·lua·接口·fastapi·请求