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

相关推荐
花间相见4 天前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
霍格沃兹测试学院-小舟畅学4 天前
UI 测试的语义断言:Midscene aiAssert 比像素比对稳在哪、又会骗在哪
人工智能·测试工具
zuozewei4 天前
附录 A:主流工具对比选型表
人工智能·测试工具
我的xiaodoujiao4 天前
Django 基础知识详细图文教程 10-Django 模板引擎 3
后端·python·测试工具·django
霍格沃兹测试学院-小舟畅学4 天前
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
人工智能·测试工具
Liaiyang665 天前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审
霍格沃兹测试学院-小舟畅学5 天前
我用 AI 把 Swagger 变成 500 条 pytest 用例,回归从 3 天到 3 小时
人工智能·测试工具
奔跑中的小象5 天前
GuideLLM 压测实战指南:给大模型推理服务做一次完整 SLA 评估
测试工具·guidellm
liulilittle5 天前
麻将结算全链路语义(SETTLE_SEMANTICS)
ai·自动化·llm·mock·lua·测试
Madison-No75 天前
基于JMeter工具的性能测试(接口)
python·jmeter·postman