consul使用HTTP api批处理KV对HTTP post(通过HTTP API导入巨大的json)

Ven*_*u S 5 uri key-value-store consul consul-template consul-kv

我在 json 中有应用程序配置,每个应用程序最多有 80 个键/值对,这些键/值对将存储在 Consul KV Store 中。一般来说,它们是java键值属性,我有一个简单的shell脚本,它对值进行编码并将其转换为与consul import命令兼容的导入。我正在尝试为船上的新应用程序(开始使用 consul 进行 KV 存储的应用程序)自动执行 consul KV 导入。到目前为止,我们正在手动运行consul kv import @app_config.json,但是,我想调用 HTTP api,而不是通过 consul KV import 进行导入。请问有什么建议吗?

json 格式的应用程序配置示例。

[
        {
                "key": "asia",
                "flags": 0,
                "value": "NDQzNg=="
        },
        {
                "key": "asia/india",
                "flags": 0,
                "value": "MTMyNA=="
        },
        {
                "key": "europe",
                "flags": 0,
                "value": "NzQzLjE="
        },
        {
                "key": "europe/france",
                "flags": 0,
                "value": "NjYuOQ=="
        },
        {
                "key": "europe/germany",
                "flags": 0,
                "value": "ODIuNjc="
        }
]
Run Code Online (Sandbox Code Playgroud)

dhi*_*ilt 1

基本上,您需要发送 PUT /v1/txn 请求,其有效负载包含交易操作数组,例如

const url = 'http://127.0.0.1:8500/v1/txn';

const bulk = [
  {
    "KV": {
      "Verb": "set",
      "Key": "bulk/hello",
      "Value": "aGVsbG8="
    }
  },
  {
    "KV": {
      "Verb": "set",
      "Key": "bulk/world",
      "Value": "d29ybGQ="
    }
  }
];

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json;charset=UTF-8'
  },
  body: JSON.stringify(bulk)
};

await fetch(url, options);
Run Code Online (Sandbox Code Playgroud)