现在还未想好如何通过url实现set (config) 和invoke (method),因为get (status) 是最容易的,所以先实现了get
本文是前两篇文章的结合
如何node-red中创建一个新的node: https://www.limfx.pro/ReadArticle/3240/ru-he-nodered-zhong-chuang-jian-yi-ge-xin-de-node
JavaScript爬虫: https://www.limfx.pro/ReadArticle/3245/javascript-pa-chong
具体参考上文 如何node-red中创建一个新的node,本文只贴出代码内容
//cfet-get.js
module.exports = function(RED) {
function cfetGetNode(config) {
const axios = require('axios');
RED.nodes.createNode(this,config);
var url="http://localhost:8003"+config.url;
var node = this;
node.on('input', function(msg) {
axios(url).then(response => {
msg.payload=response.data;
node.send(msg);
}).catch(error => {
msg.payload=error;
node.send(msg);
});
});
}
RED.nodes.registerType("cfet-get",cfetGetNode);
}
在cfet-get.js中使用到了axios,所以需要在当前文件夹,命令行输入npm install axios
<!-- cfet-get.html -->
<script type="text/javascript">
RED.nodes.registerType('cfet-get',{
category: 'cfet',
color: '#a6bbcf',
defaults: {
name: {value:""},
url: {value:""}
},
inputs:1,
outputs:1,
icon: "file.png",
label: function() {
return this.name||"cfet-get";
}
});
</script>
<script type="text/html" data-template-name="cfet-get">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-url"><i class="fa fa-tag"></i> Url</label>
<input type="text" id="node-input-url">
</div>
</script>
<script type="text/html" data-help-name="cfet-get">
<p>A simple node that gets status from cfet</p>
</script>
//package.json
{
"name": "cfet2app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "ye",
"license": "ISC",
"node-red": {
"nodes": {
"cfet-get": "cfet-get.js"
}
},
"dependencies": {
"axios": "^1.5.0",
}
}
首先打开cfet2app,以 get /WorkAll/CurrentStateNo
作为测试
然后启动node-red,左侧栏找到我们新创建的cfet-get结点,拖出后可编辑属性,将Url编辑为/WorkAll/CurrentStateNo
最后搭建一个简单的测试流程,可以看到inject结点产生一个信号后输入到get结点,然后get到了/WorkAll/CurrentStateNo
的JSON信息,最后在debug1结点处输出,如右侧栏所示
本文章使用limfx的vscode插件快速发布