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

如何在WireMock映射中匹配请求头的字符数组值?

WireMock匹配字符数组类型请求头的解决方案

问题原因

WireMock默认的equalTo匹配器仅支持字符串类型的操作数,直接传入字符数组会触发equalTo operand must be a non-null string初始化错误。

解决方案

根据请求头中字符数组的实际传输格式,选择以下适配方案:

方案1:请求头值为JSON序列化的字符数组

如果客户端发送的apiKey请求头是JSON格式的字符串(如["t","e","s","t"]),使用equalToJson匹配器直接匹配JSON结构:

"request": {
  "urlPathPattern": "/some/url",
  "method": "GET",
  "headers": {
    "apiKey": {
      "equalToJson": "[\"t\",\"e\",\"s\",\"t\"]"
    }
  }
}

方案2:请求头值为自定义格式的字符数组

如果字符数组以其他格式(如逗号分隔的t,e,s,t)传输,使用matchesScript脚本匹配器自定义校验逻辑(以Groovy脚本为例):

"request": {
  "urlPathPattern": "/some/url",
  "method": "GET",
  "headers": {
    "apiKey": {
      "matchesScript": {
        "scriptEngineName": "groovy",
        "script": "def headerValue = request.headers.getFirst('apiKey'); def expectedArray = ['t','e','s','t']; headerValue.split(',').collect { it.trim() } == expectedArray"
      }
    }
  }
}

根据实际的分隔符或格式,调整脚本中的解析逻辑即可。

方案3:自定义Java匹配器(进阶)

如果需要更复杂的校验逻辑,可编写自定义Java匹配器,实现RequestMatcher接口,打包后引入WireMock环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:18:17