gpt4 book ai didi

json - JSON 响应中的 Wiremock 变量替换

转载 作者:行者123 更新时间:2023-12-05 03:11:43 24 4
gpt4 key购买 nike

我正在尝试配置 Wiremock 映射以返回包含请求值的 JSON 响应。

请求很简单

{ "clientTag": "123" }

它的映射是:

{
"priority": 4,
"request": {
"method": "POST",
"urlPattern": "/test"
},
"response": {
"status": 200,
"body": "{ \"loginId\": \"${loginId}\" }",
"headers": {
"Content-Type": "application/json"
}
},
"captures" : [ {
"source" : "BODY",
"target" : "loginId",
"pattern" : "$..clientTag",
"captureGroup" : 1
} ]
}

我收到回复:

{ "loginId": "" }

而预期的是:

{ "loginId": "123" }

如果我切换到 XML 请求,一切都可以正常使用 <clientTag>(.*?)</clientTag> 模式,但我想坚持使用 JSON。

不幸的是,Wiremock 文档很少,因此出现了这个问题。有任何想法吗?

更新:如果有人稍后阅读本文,您最好使用代码中的转换,这些转换在更高的 Wiremock 版本中可用。

最佳答案

这似乎是 OpenTable's Wiremock Body Transformer 的完美用例.

它可以像这样轻松地与独立服务器集成:

java -cp "wiremock-body-transformer-1.1.6.jar:wiremock-2.3.1-standalone.jar"com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --verbose --extensions com .opentable.extension.BodyTransformer

此扩展允许您在请求中轻松指定您希望在响应中匹配的变量。

{
"request": {
"method": "POST",
"urlPath": "/transform",
"bodyPatterns": [
{
"matchesJsonPath": "$.name"
}
]
},
"response": {
"status": 200,
"body": "{\"responseName\": \"$(name)\"}",
"headers": {
"Content-Type": "application/json"
},
"transformers": ["body-transformer"]
}
}

它还可以轻松地让您在响应中生成一个随机整数,如下所示:

{
"request": {
"method": "POST",
"urlPath": "/transform",
},
"response": {
"status": 200,
"body": "{\"randomInteger\": \"$(!RandomInteger)\"}",
"headers": {
"Content-Type": "application/json"
},
"transformers": ["body-transformer"]
}
}

关于json - JSON 响应中的 Wiremock 变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com