如何在独立运行的WireMock服务中提取JSON请求属性值生成动态响应
实现方案
完全可以实现,WireMock 原生支持响应模板功能,专门用于这类动态响应生成场景,针对独立运行的WireMock服务,按以下步骤操作即可:
步骤1:开启响应模板功能
独立部署的WireMock默认没有开启响应模板,启动服务时需要加上参数 --global-response-templating,启动命令示例:
java -jar wiremock-jre8-standalone-2.35.0.jar --global-response-templating
如果不想全局开启,也可以在单个stub配置里单独加 responseTemplating: true 参数。
步骤2:配置匹配的Stub规则
你可以直接用JSON格式配置stub,针对你举的示例,配置内容如下,注意把url路径替换为你实际的接口路径:
{ "request": { "method": "POST", "url": "/your/actual/api/path", "bodyPatterns": [ { "matchesJsonPath": "$.name" } ] }, "response": { "status": 200, "body": "{\"Request_Name\": \"{{jsonPath request.body '$.name'}}\"}", "headers": { "Content-Type": "application/json" }, "transformers": ["response-template"] } }
这里核心是用 {{jsonPath request.body '$.name'}} 这个模板表达式,直接从请求体的JSON里提取name属性的值,插入到响应体中。
效果验证
发送请求到对应接口,请求体为你给出的示例:
{ "name": "Dummy-Name" }
就会得到预期的响应:
{"Request_Name": "Dummy-Name"}
内容的提问来源于stack exchange,提问作者Sumeet Ambastha
相关产品推荐
相关产品推荐

