Wiremock-如何将响应模板应用于标题名称?

时间:2018-06-22 14:23:47

标签: wiremock

我正在尝试提供一种MOCK服务,该服务从查询中获取headerName和值,并将其作为(动态)标头返回给响应。我正在使用以下响应定义:

"response" : {
  "status" : 200,
  "statusMessage": "OK",
  "headers" : {
    "Content-Type" : "application/json",
    "{{request.query.debugHeader}}" : "{{request.query.debugHeaderValue}}"
  },
  "jsonBody" : {
    "headerSent": "{{request.query.debugHeader}} {{request.query.debugHeaderValue}}"
  },
  "transformers": ["response-template"],
  "base64Body" : ""
}

标头值已正确评估并放入响应模板中,但是我无法从请求中获取标头名称。

发送请求时

http://localhost:8090/example?debugHeader=name&debugHeaderValue=value

我得到的结果标头是:

HTTP/1.1 200 OK
Content-Type: application/json
{{request.query.debugHeader}}: value

但是我希望将{{request.query.debugHeader}}替换为实际的请求参数值(在上面的示例中为“名称”)。

有什么想法吗?

预先感谢 亚历克斯

2 个答案:

答案 0 :(得分:1)

WireMock.Net支持此功能。

您需要指定的请求如下所示:

{
    "Guid": "90356dba-b36c-469a-a17e-669cd84f1f05",
    "Priority": 0,
    "Request": {
        "Path": {
            "Matchers": [
                {
                    "Name": "WildcardMatcher",
                    "Pattern": "/trans",
                    "IgnoreCase": false
                }
            ]
        },
        "Methods": [
            "get"
        ]
    },
    "Response": {
        "StatusCode": 200,
        "BodyDestination": "SameAsSource",
        "Body": "{\"msg\": \"Hello world : {{request.path}}\" }",
        "UseTransformer": true,
        "Headers": {
            "Content-Type": "application/json",
            "Transformed-Postman-Token_{{request.path}}": "token is {{request.headers.Postman-Token}}"
        }
    }
}

这将在响应中添加转换后的标头 Transformed-Postman-Token _ {{request.path}}

答案 1 :(得分:0)

当前,这种类型的可变性不是现成的WireMock应用程序的一部分,必须自定义添加。在WireMock文档中的Extending WireMock部分,尤其是 Transformation Responses 中的部分。