节点红色函数节点

时间:2015-10-22 18:02:30

标签: http get xmlhttprequest ibm-cloud node-red

是否可以在节点红色"功能"内进行http GET请求?节点。 如果是的话,有人可以给我一些示例代码。

我想解决的问题如下: 我想用自定义命令解析msg.payload。对于每个命令,我想发出一个http请求,并用HTTP GET请求的响应替换该命令。

expl:
msg.payload = "Good day %name%. It's %Time% in the %TimeOfDay%. Time for your coffee";

%name%,%TimeOfDay%和%Time%应替换为http://nodeserver/name,...,http://nodeserver/Time的Get请求的内容。

2 个答案:

答案 0 :(得分:1)

thnx Hardilb,

经过半天的搜索,我发现也可以通过在设置

之前放置一个节点来配置http节点
msg.url = "http://127.0.0.1:1880/" + msg.command ;
msg.method = "GET";

我使用以下代码获取命令列表

var parts = msg.payload.split('%'),
len = parts.length,
odd = function(num){return num % 2;};

msg.txt= msg.payload;
msg.commands = [];
msg.nrOfCommands = 0;
for (var i = 0; i < len ; i++){
    if(odd(i)){
        msg.commands.push(parts[i]);
        msg.nrOfCommands = msg.nrOfCommands + 1;
    }
}
return msg;

答案 1 :(得分:0)

你应该避免在函数节点中进行异步或阻塞。

不要尝试在一个函数节点中完成所有操作,使用多个http Request节点链接多个函数节点,以便一次构建一个部分的字符串。

您可以通过将字符串存储在msg对象中的另一个变量而非有效负载中来完成此操作。

要注意的一件事是你应该确保在每次调用下一个http Request节点之前清除msg.headers