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的朋友们一定要注意!

相关推荐
SRC_BLUE_1732 分钟前
[网络爬虫] 动态网页抓取 — Selenium 入门操作
网络·爬虫·selenium·测试工具
互联网杂货铺5 小时前
python+pytest 接口自动化测试:参数关联
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
黑客笔记12 小时前
读书报告」网络安全防御实战--蓝军武器库
测试工具·web安全·网络安全
自由鬼15 小时前
免费开源抓包工具Wireshark介绍
运维·服务器·网络·测试工具·网络安全·wireshark
海姐软件测试15 小时前
Deepseek如何写测试用例
测试工具·面试
alenliu062116 小时前
跟着 Lua 5.1 官方参考文档学习 Lua (12)
lua
不脱发的猴子21 小时前
Wireshark使用教程
网络·测试工具·wireshark
Aimyone1 天前
postman导出 二进制文件流处理成文件
postman
勘察加熊人1 天前
fastapi房产销售系统
数据库·lua·fastapi
waicsdn_haha1 天前
Postman v11 安装与API测试入门教程(Windows平台)
人工智能·windows·测试工具·mysql·postman·dbeaver·rest