0

我正在使用 Wiremock 服务器来模拟响应并使用 JSON 格式来模拟响应。

{
  "request":
  {
    "url": "/token",
    "method": "POST",
    "bodyPatterns" : [{
      "contains": "username=test_user@gmail.com&password=passwordtest_security_token"
    }]
  },
  "response":
  {
    "status": 200,
    "headers":
    {
      "Content-Type" : "application/json"
    },
    "jsonBody": {"message": "ok"}
}

这不起作用,因为电子邮件中的“@”未编码。我需要通过“test_user%40gmail”才能使请求生效。

这里的变化只在一个地方。但对于其他模拟,请求正文有许多特殊字符**(@,%*\n\s)**。有什么方法可以处理 Wiremock 中的编码部分。

另外,有没有办法在url中编码字符串?

4

1 回答 1

0

在上面的示例中,缺少一个防止在 WireMock 中加载的 accolade。下面的例子是完整的:

{
    "request": {
        "url": "/token",
        "method": "POST",
        "bodyPatterns": [{
                "contains": "username=test_user@gmail.com&password=passwordtest_security_token"
            }
        ]
    },
    "response": {
        "status": 200,
        "headers": {
            "Content-Type": "application/json"
        },
        "jsonBody": {
            "message": "ok"
        }
    }
}

在您的问题中,您强调需要使用%40而不是@. 我一直无法复制这种情况。因为我不确定您是通过表单还是原始字符串发布。

在您使用常规表单数据选项的情况下,这会导致匹配失败。

在此处输入图像描述

但是将其作为原始主体发送,结果却完全相反。该示例的行为与您所描述的完全一样。下面是我的邮递员结果的截图:

在此处输入图像描述

于 2020-01-22T07:16:53.047 回答