如何在 WireMock Handlebars 扩展中正确定义和处理静态 JSON 数组?

问题描述 投票:0回答:1

我正在使用 WireMock 的独立版本和 Handlebars 来创建动态响应。我需要在 JWT 负载中包含一个静态 JSON 数组。但是,当我尝试在映射文件中定义数组时,它被视为字符串而不是 JSON 数组。

这是我的配置的一个简单示例:

要求:

{
  "request": {
    "method": "GET",
    "urlPath": "/api/test"
  },
  "response": {
    "status": 200,
    "body": "{{{jwt 
        userId='12345'
        userName='testUser'
        myArray='[{\"key1\":\"value1\"}, {\"key2\":\"value2\"}]'
        isActive=true
        role='admin'
    }}}"
  }
}

预期输出:

{
  "userId": "12345",
  "userName": "testUser",
  "myArray": [
    {"key1": "value1"},
    {"key2": "value2"}
  ],
  "isActive": true,
  "role": "admin"
}

数组

myArray
被视为字符串,而不是 JSON 对象数组。如何在 WireMock Handlebars 中正确定义和处理静态 JSON 数组,以将其识别为 JSON 数组,而不是字符串?

jwt wiremock wiremock-standalone
1个回答
0
投票

目前这是不可能的。

jwt
插件中的数组只能是
Integer
Long
String
类型,而不是您想要实现的对象。

因为您在

myArray
的值周围有单引号,所以它被视为字符串,就像您在问题中提到的那样。 您可以传递一个数组作为值,它将被视为一个数组:

{{{jwt userId='12345' userName='testUser' myArray=(array 1 2 3) isActive=true role='admin'}}}

解码后,返回的 jwt 如下所示:

{
  "userId": "12345",
  "userName": "testUser",
  "myArray": [
    1,
    2,
    3
  ],
  "isActive": true,
  "role": "admin"
}

正如我上面提到的,数组中只允许使用某些类型,因此它有一点限制。

© www.soinside.com 2019 - 2024. All rights reserved.