简介
node-red-contrib-http-event-collector 是一个 Node-RED 插件,用于将 HTTP POST 请求事件传递给指定的端点。该插件支持配置用于身份验证的令牌和自定义头,以及对请求正文的进一步处理和转换。
该插件主要适用于物联网设备和服务的事件收集和分发,可以用于在线设备监视、远程控制和数据分析等场景。
安装
首先需要安装 Node-RED,可以使用 npm install -g node-red 命令进行安装。然后,使用 npm install node-red-contrib-http-event-collector 命令安装该插件。
配置
在 Node-RED 的画布中,将 http-event-collector 节点添加到要使用的流程中,并根据需要进行配置。
基本配置
在节点配置面板中,可以设置以下选项:
Name: 节点的名称
URL: 接收事件的 HTTP 端点 URL,应该包括协议、主机名、端口号和路径
Method: 用于发送事件的 HTTP 请求方法,可以是 GET、POST、PUT 等
Use Tocken: 指示是否使用身份验证令牌,如果勾选,则需要在下面设置令牌的名称和值
Custom Headers: 在请求头中添加自定义的键值对,可以使用变量替换,例如 X-Device-ID: {{payload.device_id}}
Output Mode: 指示节点的输出模式,可以是 Full Message 或 Payload Only。Full Message 模式包括完整的消息对象,包括标记、负载和元数据;Payload Only 模式仅包括消息负载。
高级配置
在节点配置面板的高级选项卡中,可以进一步设置以下选项:
Request Options: 用于配置 HTTP 请求的选项,例如超时、重试等
Additional Headers: 添加其他头信息,可以使用变量替换,例如 X-Timestamp: {{timestamp}}
Transform: 对请求正文进行进一步处理和转换,例如使用 Mustache 模板引擎对 JSON 对象进行渲染
示例代码
以下是一个基本的 Node-RED 流程,用于将固定负载的事件发送到指定的 HTTP 端点:
[{"id":"5b5bdd5e.b8ca18","type":"inject","z":"4f4bbe7b.8fc898","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"event\":\"test\",\"value\":123}","payloadType":"json","x":210,"y":120,"wires":[["b913ee66.68efe"]]},{"id":"b913ee66.68efe","type":"http-event-collector","z":"4f4bbe7b.8fc898","name":"","url":"http://example.com/collector","method":"POST","useToken":false,"token":"","customHeaders":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"},{"key":"X-Device-ID","value":"my-device"}],"outputMode":"full","x":440,"y":120,"wires":[[]]}]
在此示例中,已将注入节点设置为触发 HTTP 事件集合器节点。HTTP 事件收集器节点中已设置了以下参数:
Method: POST
Use Token: false
Custom Headers: Content-Type: application/x-www-form-urlencoded, X-Device-ID: my-device
Output Mode: Full Message
注意,这里的 URL 和 Custom Headers 需要根据实际情况进行修改。
总结
使用 node-red-contrib-http-event-collector 插件可以方便地将 HTTP 事件传递给指定的端点,这对于物联网设备和服务的事件收集和分发非常有用。在配置插件时,需要考虑许多选项,例如 URL、Method、Custom Headers 等,这些选项的合理设置可以使插件的功能更加强大。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566c381e8991b448e322a