You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WireMock Standalone响应模板:同JSON键引用与数值运算实现

WireMock Standalone 响应模板数值计算解决方案

核心问题解决思路

WireMock的响应模板基于Handlebars,并提供专属内置助手函数,无法直接使用JavaScript的parseInt/parseFloat,也不能直接引用模板中已定义的JSON键值,需按以下方式处理:


方案1:直接在乘法运算中提取并转换数值

使用WireMock内置的number助手将字符串转为数值,结合multiply助手完成乘法,同时直接通过jsonPath从请求体中提取字段(无需引用模板内的JSON键):

{
  "price": {{jsonPath request.body '$.price'}},
  "quantity": {{jsonPath request.body '$.quantity'}},
  "amt": {{multiply (number (jsonPath request.body '$.price')) (number (jsonPath request.body '$.quantity'))}}
}

关键说明:

  • number助手:自动将字符串格式的数字转换为数值类型(支持整数、浮点数),替代JavaScript的parseInt/parseFloat
  • jsonPath request.body '$.price':直接从请求体中提取对应字段,模板中无法引用已定义的price键(因为JSON结构是渲染结果,并非模板上下文变量)

方案2:用变量复用提取的数值(更易维护)

通过Handlebars的assign助手将转换后的数值存为模板变量,后续直接引用变量完成计算,避免重复写jsonPath:

{{#assign 'priceVal'}}{{number (jsonPath request.body '$.price')}}{{/assign}}
{{#assign 'quantityVal'}}{{number (jsonPath request.body '$.quantity')}}{{/assign}}
{
  "price": {{priceVal}},
  "quantity": {{quantityVal}},
  "amt": {{multiply priceVal quantityVal}}
}

必要前提

启动WireMock Standalone时必须启用响应模板功能,添加参数:

wiremock --global-response-templating

内容的提问来源于stack exchange,提问作者Mahesh Kumaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:14:53