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

WireMock POST请求中无法将请求体添加到响应体的问题

问题分析

你的问题出在WireMock响应模板的语法使用和JSON结构拼接上:

  • 直接用{{{request.body}}}嵌套在JSON对象的{}中,会导致模板解析异常,无法正确渲染请求体内容
  • 手动转义JSON字符串的方式容易引发语法冲突,使得变量未被正确解析
解决方案

推荐两种可行的修复方式:

方式1:使用jsonBody直接构建响应JSON(推荐)

这种方式无需手动处理字符串转义,直接通过JSON结构嵌入请求体:

{
  "request": {
    "method": "POST",
    "urlPath": "/endpoint"
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "request": "{{parseJson request.body}}",
      "anotherField": "string"
    },
    "headers": {
      "Content-Type": "application/json;charset=UTF-8"
    },
    "transformers": ["response-template"]
  }
}
  • parseJson函数会把请求体的字符串内容解析为JSON对象,直接嵌入响应的request字段中,保证JSON结构合法

方式2:修正字符串形式的body语法

如果坚持使用字符串拼接,需要去掉多余的嵌套花括号,并使用正确的模板变量语法:

{
  "request": {
    "method": "POST",
    "urlPath": "/endpoint"
  },
  "response": {
    "status": 200,
    "body": "{\"request\": {{request.body}}, \"anotherField\": \"string\" }",
    "headers": {
      "Content-Type": "application/json;charset=UTF-8"
    },
    "transformers": ["response-template"]
  }
}
  • 移除了{{{request.body}}}外层多余的{},因为request.body本身就是JSON对象格式的字符串
  • 使用{{request.body}}(双重花括号)即可输出原始请求体内容,三重花括号适用于需要保留HTML标签等场景,此处无需使用
关键注意点
  • WireMock的response-template转换器使用Handlebars风格语法,变量通过{{变量名}}调用,$或@是其他模板引擎的语法,此处不适用
  • 确保请求体本身是合法的JSON格式,否则parseJson函数会抛出解析错误

内容的提问来源于stack exchange,提问作者Aabid-Faruk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:35:23