当前位置: 首页 > 知识库问答 >
问题:

如何使用Wiremock在字段中返回请求正文作为响应

拓拔泓
2023-03-14

我有一个 JSON 请求,如下所示:

{
    "fieldOne": 12345,
    "fieldTwo": 1234,
    "fieldThree": "2019-12-05T12:32:42.323905",
    "fieldFour": "string",
    "fieldFive": 5432,
    "fieldSix": "string",
    "fieldSeven": "string",
    "fieldEight": "string"
}

作为响应,我需要在一个字段中发送完整的请求JSON对象。我的Wiremock存根JSON是,

{
  "request": {
    "method": "POST",
    "urlPath": "/endpoint"
},
  "response": {
    "status": 200,
    "jsonBody": {
      "request": "{{{request.body}}}", //If I remove quotes here then I get error so I added the quotes
      "anotherField": "string"
    },
    "headers": {
      "Content-Type": "application/json;charset=UTF-8"
    },
    "transformers": ["response-template"]
  }
}

如何在响应字段中发送请求正文?

我现在收到错误:

    Illegal unquoted character ((CTRL-CHAR, code 10)): 
has to be escaped using backslash to be included in string value\n at [Source: (

我使用的是导致此问题的wiremock2.19.0版本。我将版本升级到2.21.0,现在问题解决了

但是在响应中,我仍然遇到以下问题,其中请求正文位于双引号内,这是无效的JSON。响应:-

{
    "request": "{ //Here the double quotes should not be present before curly brace
        "fieldOne": 12345,
        "fieldTwo": 1234,
        "fieldThree": "2019-12-05T12:32:42.323905",
        "fieldFour": "string",
        "fieldFive": 5432,
        "fieldSix": "string",
        "fieldSeven": "string",
        "fieldEight": "string"
    }",
    "anotherField": "string"
}

共有1个答案

韩阳云
2023-03-14

使用body而不是jsonBody。然后可以以任何需要的方式格式化响应消息(正文双引号中的内容)。

这也适用于线膛2.19.0版本

{
  "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"]
  }
}
 类似资料:
  • 我使用Wiremock服务器模拟响应,并使用JSON格式模拟响应。 这不起作用,因为电子邮件中的“@”未编码。我需要传递“test_user@gmail”才能使请求正常工作。 这里只有一个地方有零钱。但对于其他模拟,请求正文有许多特殊字符**(@,%*\n\s)**。有没有办法在Wiremock中处理编码部分。 另外,有没有办法在url中编码字符串?

  • 我试图使用Wiremock Standalone服务器实现POST REST调用的模拟。我面临这样的挑战,假设post主体包含一个“name”字段及其值,那么在post调用的响应中应该返回相同的值。我的json文件如下所示: 所以,我需要得到值,即794363,但使用上面的方法无法在后响应体中获取它。 我也试过这个: 所以我的问题是,即使我使用正则表达式,它与请求中的任何数字匹配,如何使用Wire

  • 因此,我试图使用wiremck向带有请求正文的URL发出后请求,然后使用我的respons.json文件返回响应。(自定义响应) 我就是这样设置的,但我似乎找不到任何关于如何设置带有请求主体的post存根(包含数据,比如说尝试创建ID),然后检索自定义响应主体(从json文件创建ID响应)的信息。我该怎么设置呢。我尝试通过json文件请求生成id,然后尝试检索创建的id。 WithBodyFile

  • 问题内容: 我正在使用Spring 和Jackson 的RESTful JSON API 。在某些情况下,我们可能会收到带有自定义JSON主体的(未经授权)响应,该响应由API制造商定义,如下所示: 我们需要解析主体,并在业务逻辑中使用该属性。 这是我们需要解析为的错误响应Java对象: 还有一个自定义错误处理程序可以做到这一点: 错误处理程序失败,并在try块中显示: “无法读取JSON:由于服

  • 问题内容: 将编码的字符串添加到http共振似乎将某些字符替换为!F(MISSING)。如何预防? 输出: {“ encodedText”:“ M6c8RqL61nMFy%!F(MISSING)hQmciSYrh9ZXgVFVjO”} 码: 问题答案: 您正在使用转义值“ M6c8RqL61nMFy%2FhQmciSYrh9ZXgVFVjO”作为以下行上的格式字符串: Fprintf尝试格式化动词