request.query.<key>.[<n>] 不工作 & request.query.<key>.[0]一次生成所有查询参数

问题描述 投票:0回答:1

我正在使用 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]}}

wiremock handlebarshelper
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.