You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wiremock动态值请求匹配:如何匹配请求体中动态id字段

Wiremock动态JSON字段匹配解决方案

方案1:使用matchesJsonPath做定向字段校验

如果你仅需要校验id字段的存在性或格式规则,不需要匹配整个JSON结构,直接通过JSON路径匹配规则实现即可,示例配置如下:

{
  "request": {
    "bodyPatterns": [
      // 仅校验id字段存在
      {
        "matchesJsonPath": "$.id"
      },
      // 如需限定id为字母数字组合,可改用正则匹配规则
      {
        "matchesJsonPath": "$.id[?(@ =~ /[a-zA-Z0-9]+/)]"
      }
    ]
  }
}

方案2:使用equalToJson占位符功能(推荐,适合保留整体JSON结构匹配的场景)

Wiremock 2.0+版本支持在equalToJson规则中开启占位符能力,仅忽略指定动态字段的取值校验,其余字段仍按原有规则匹配:

  1. 首先在equalToJson的JSON模板中,将动态字段的取值替换为对应的占位符:
    • 完全不校验字段取值:用${json-unit.ignore}
    • 校验字段取值符合指定正则:用${json-unit.regex}你的正则表达式
  2. 新增"placeholders": true参数开启占位符解析能力

示例配置如下:

{
  "request": {
    "bodyPatterns" : [ {
      "equalToJson" : "{ \"id\": \"${json-unit.ignore}\" }",
      "ignoreArrayOrder" : true,
      "ignoreExtraElements" : true,
      "placeholders": true
    } ]
  }
}

如果需要限定id为6位字母数字组合,可调整equalToJson值为:

"equalToJson" : "{ \"id\": \"${json-unit.regex}[a-zA-Z0-9]{6}\" }"

注意事项

  • 占位符功能需要Wiremock 2.3.1及以上版本支持,低版本请优先使用matchesJsonPath方案
  • 如果动态字段为数值/布尔类型,不需要给占位符加引号,例如数值类型id的写法为"id": ${json-unit.ignore}

内容的提问来源于stack exchange,提问作者Cork Kochi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 19:36:02