新闻中心
PRESS CENTER原文:(HTTP监听/响应)
EG8200系列边缘计算网关支持同时作为HTTP服务端和HTTP客户端,且两者独立互不影响。本篇主要介绍HTTP服务端模式,主要分为两个节点:HTTP监听、HTTP响应。
HTTP监听节点创建HTTP服务器用于接收HTTP请求,HTTP响应节点负责响应请求。
输出(HTTP监听) |
msg.payload #HTTP请求正文 msg.req #HTTP请求对象。该对象包含有关请求信息的多个属性 # body - 传入请求的正文,格式将取决于请求 # headers - 包含HTTP请求标头的对象 # query - 包含任何查询字符串参数的对象 # params - 包含任何路由参数的对象 # cookies - 包含请求cookie的对象 # files - 如果节点启用了文件上传,则为包含了上传的文件的对象 msg.res #HTTP响应对象,该属性必须保留在传递给响应节点的消息上 |
输入(HTTP响应) |
msg.payload #响应的正文 msg.statusCode #如果设置,则用作响应状态代码。默认值:200 msg.headers #如果设置,则提供HTTP头以包含在响应中 msg.cookies #如果设置,则可用于设置或删除cookie |
1. GET请求数据
以下演示采集一个Modbus TCP从机数据,网关做为HTTP服务端,用户通过浏览器GET请求方式获取采集的数据。
首先配置HTTP监听请求方式GET,配置上URL,配置上Modbus读节点的采集参数,再连接上HTTP响应。可以根据日志看到Modbus读节点返回的内容是JSON对象。
GET请求 |
[{"id":"6daf7fe1c05731f7","type":"http in","z":"409d1e89497faaa4","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":80,"y":260,"wires":[["803a50e0dc52f4fb"]]},{"id":"bd5a08217d6c0402","type":"http response","z":"409d1e89497faaa4","name":"","statusCode":"","headers":{},"x":450,"y":260,"wires":[]},{"id":"803a50e0dc52f4fb","type":"modbusRead","z":"409d1e89497faaa4","name":"","uid":"1","dataType":"3","len":"120","modbus":"aeb5401700b85127","columns":[{"Key":"数据1","Address":"0","Type":"1","Tdata":""},{"Key":"数据2","Address":"1","Type":"1","Tdata":""},{"Key":"数据3","Address":"2","Type":"1","Tdata":""},{"Key":"数据4","Address":"3","Type":"1","Tdata":""}],"x":250,"y":260,"wires":[["bd5a08217d6c0402","87227e5cde22ecb4"]]},{"id":"87227e5cde22ecb4","type":"debug","z":"409d1e89497faaa4","name":"打印Modbus数据","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":490,"y":220,"wires":[]},{"id":"aeb5401700b85127","type":"modbus config","name":"","model":"1","host":"192.168.0.59","port":"502","serialport":"/dev/ttyAS3","baudrate":"9600","databits":"8","stopbits":"1","parity":"none","timeout":"50","reqtimeout":"1000"}] |
2. GET请求携带响应res属性
数据传输时,必须要携带HTTP监听节点输出的msg.res属性,才能成功传递给HTTP响应节点。
在有的节点或者流程里,数据传输过程中HTTP监听输出的内容msg对象被覆盖,后续数据中不存在msg.res这个对象及其内容,导致数据没法成功响应。可以将HTTP监听的msg.res对象数据缓存在全局变量中。后续数据传输获取这个全局变量值给msg.res一起传输即可。
GET请求携带res |
[{"id":"deeaeb55a7193dd6","type":"http in","z":"409d1e89497faaa4","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":100,"y":300,"wires":[["994c95fa1dbc3020","d66ca0092ec4aebf"]]},{"id":"afdbe4f6f3e855d3","type":"http response","z":"409d1e89497faaa4","name":"","statusCode":"","headers":{},"x":450,"y":300,"wires":[]},{"id":"994c95fa1dbc3020","type":"function","z":"409d1e89497faaa4","name":"存储res属性数据","func":"global.set(\"res\",msg.res) //设置全局变量\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":260,"wires":[[]]},{"id":"d66ca0092ec4aebf","type":"function","z":"409d1e89497faaa4","name":"模拟数据","func":"msg = {}\nmsg.payload ={\n A:12,\n B:13,\n C:14,\n D:15,\n Time:new Date()\n}\nmsg.res = global.get(\"res\") //获取全局变量\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":300,"wires":[["a4fbb36c3cbc36ec","afdbe4f6f3e855d3"]]},{"id":"a4fbb36c3cbc36ec","type":"debug","z":"409d1e89497faaa4","name":"打印模拟输出值","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":480,"y":260,"wires":[]}] |
支持SSL/TLS加密
请求地址填写:网关IP“+”:1880“+”URL,案例地址为192.168.0.58:1880/test