我正在使用 wiremock-jre8-standalone-2.35.0.jar
这是我的映射文件-
{
"request": {
"urlPattern": "/fulfillmentstate\\?fulfillmentid=SVT-ETA-\\d+(%2CSVT-ETA-\\d+)*",
"method": "GET",
"queryParameters" : {
"fulfillmentid" : {
"matches" : "^SVT-ETA-\\d+(,SVT-ETA-\\d+)*$"
}
}
},
"response": {
"status": 200,
"fixedDelayMilliseconds": 500,
"transformers": [
"response-template"
],
"headers": {
"Content-Type": "application/json"
},
"bodyFileName": "fulfillmentstate_qpm.json"
}
}
我通过邮递员打的网址-
http://localhost:8080/fulfillmentstate?fulfillmentid=SVT-ETA-1234%2CSVT-ETA-234%2CSVT-ETA-344
现在我在 fulfillmentstate_qpm.json 中使用的响应模板是 -
{{request.query.fulfillmentid.[0]}}
预计:SVT-ETA-1234 实际:SVT-ETA-1234、SVT-ETA-234、SVT-ETA-344
这是官方文档:https://wiremock.org/docs/response-templating/(在请求模型标题下)
我需要在响应文件中使用这些查询参数,我需要为每个查询参数添加多个 json 属性。
我试过了 {{request.query.fulfillmentid.[0]}} {{request.requestLine.query.fulfillmentid.[0]}}
这是一个替代方案: 如果请求 URL 是:
http://localhost:8080/fulfillmentstate?fulfillmentid=SVT-ETA-1234%2CSVT-ETA-234%2CSVT-ETA-344
这里的 URL 有用逗号分隔的查询参数,通过索引访问每个元素是:
{{ regexExtract request.query.fulfillmentid '([^,]+)' 'values'}}{{values.0}}
{{ regexExtract request.query.fulfillmentid '([^,]+)' 'values'}}{{values.1}}
{{ regexExtract request.query.fulfillmentid '([^,]+)' 'values'}}{{values.2}}
以上表达式会分别产生
SVT-ETA-1234
SVT-ETA-234
SVT-ETA-344