gpt4 book ai didi

java - Wiremock Stand alone - 如何使用请求数据操作响应

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:45 27 4
gpt4 key购买 nike

我试图使用 Wiremock 独立服务器实现对 POST REST 调用的模拟。我面临这样的挑战,假设帖子正文包含一个“名称”字段及其值,该 POST 调用的响应中应返回相同的值。我的 json 文件如下所示:

{
"priority": 1,
"request": {
"method": "POST",
"urlPath": "/primeSlots",
"bodyPatterns" : [ {
"matchesJsonPath" : "{ \"things\": [ { \"name\": \"794363\" }]
}"
} ]
},
"response": {
"status": 200,
"body": "{{$.things.name.value}}",
"transformers": ["response-template"]
}
}

因此,我需要获取值,即 794363,但使用上述方法无法在帖子响应正文中获取它。

我也试过这个:

{
"request": {
"method": "POST",
"urlPath": "/transform",
"bodyPatterns": [
{
"matchesJsonPath" : "$.things[?(@.name =~ /[0-9]+/i)]"
}
]
},
"response": {
"status": 200,
"body": "{\"responseName\": \"
{{request.body.things.name.value}}\"}",
"headers": {
"Content-Type": "application/json"
},
"transformers": ["body-transformer"]
}
}

所以我的问题是,即使我使用与请求中出现的任何数字匹配的正则表达式,如何使用 Wiremock 独立 json 文件在响应中返回相同的数字?谢谢。

最佳答案

今天我遇到了和你一样的情况,找到了一个解决方案,我想和你分享一下:

  1. 创建自己的类来扩展 ResponseDefinitionTransformer
  2. 在您自己的转换器类中添加 Handlebar 功能(参见 https://github.com/jknack/handlebars.java 如何操作)
  3. (可选)附加您自己的/其他助手,例如Arrays.stream(StringHelpers.values()).forEach(helper -> this.handlebars.registerHelper(helper.name(), helper));
  4. 将您的转换器定制导出为单独的 JAR 文件
  5. 创建一个启动批处理脚本以使用您自己的转换器扩展独立启动您的 WireMock,例如java -cp "-cp ".\lib\wiremock-standalone-2.5.1.jar;.\lib\customTransformer.jar"com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --extensions "your.name .CustomTransformer"(对于 linux,使用 : 而不是 ; 作为类路径分隔符)

如果您有多个转换器,只需在 --extensions arg 中使用 ,(逗号)作为分隔符来定义所有转换器。

关于java - Wiremock Stand alone - 如何使用请求数据操作响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43073991/

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