在不安装第三方库的情况下解决http请求gzip、乱码等问题
NodeRed自带有HTTP请求节点,但是这个节点只是有基础的功能,遇到一些不常规的数据,可能处理就比较麻烦。比如我下边这个例子,获取和风天气接口,数据返回是gzip压缩过的,正常情况下我们需要解压才能获取明文。
但是NodeRed没有ungzip节点,所以除非你装第三方库(如axios请求库)
但是呢,我是不喜欢装第三方库的,主要原因是分享模块、或者重新配置还要安装第三方模块
所以能原始功能之上解决最好了。
于是我想到了一个折中的办法,直接把HTTP请求使用curl来发起,结果很符合预期。
方法很简单,新建一个函数节点,在Setup中添加模块:child_process
然后在函数里调用即可:
参考代码:
var buff = childProcess.execSync(`
curl -L -X GET --compressed '${msg.url}'
`);
var data = buff.toString();
msg.payload = JSON.parse(data);
return msg;
这个高级呀,没用过child_process模块。
gzip 节点就可以解压http请求的结果
gzip
If the input is a compressed buffer it tries to decompress to a utf8 string.
node-red-contrib-gzip : gzip dscao 发表于 2023-4-20 17:16
这个高级呀,没用过child_process模块。
gzip 节点就可以解压http请求的结果
介绍里说有,但实际只有压缩的函数(我也可能漏看了代码)
我是不太喜欢第三方库的,不能直接使用备份迁移还麻烦,所有用自带的功能实现了。
其实就是调用curl命令而已 天气相关的自动化满血复活,感谢
页:
[1]