首页 > 解决方案 > 无法通过 HTTP API 将流发布到 Node-RED,但在手动执行时可以使用

问题描述

我正在尝试使用 Node-RED API 通过以下命令发布流:

curl -ss -X POST \
      http://${IP_ADDRESS}:1880/flow \
      -H 'content-type: application/json' \
      --data-binary "@foo_nodered_flow.json"

(根据此处的 API 文档:https ://nodered.org/docs/api/admin/methods/post/flow/ )

但我收到了这条消息:

{"error":"unexpected_error","message":"Error: duplicate id"}

流量或多或少:

id使用 grep 时,我没有在该字段中找到重复的 ID grep -nrI id foo_nodered_flow.json

我能够通过 HTTP POST 发布一个类似的流程,该流程不涉及 InfluxDB,而是一个简单的文件编写器。

包含流的文件具有以下结构:

{
  "label": "Store redings - panel flow",
  "nodes": [ <put here the flow you export from the Node-RED UI> ],
  "configs": []
}

确保nodes从包含流名称的类型节点中清除列表,"type": "tab"例如"label": "Flow 1"(此标签必须作为第一个字段超出nodes数组,如上例所示)。

我还尝试删除顶级id字段和所有z似乎被自动替换/修复的字段。但我仍然得到同样的错误。

我知道这个流程有效,因为当我手动创建它时,我能够看到数据流动并最终存储在 InfluxDB 中。

此外,当在 Node-RED UI (at http://${THE_IP_ADDRESS}:1880/) 上时,我可以单击“3 行菜单”> Import > Clipboard,然后粘贴该流节点的 JSON 描述,然后我可以毫无错误地导入流,然后部署没有错误的流程。

我在用:

标签: node.jsnode-red

解决方案


推荐阅读