0

是否可以从节点红色“功能”节点内发出 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 请求的内容。

4

2 回答 2

1

谢谢哈迪布,

经过半天的搜索,我发现http-node也可以通过在它设置之前放置一个节点来配置

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;
于 2015-10-22T18:49:46.517 回答
0

您应该避免在功能节点中执行异步或阻塞操作。

不要试图在一个功能节点中完成所有操作,将多个功能节点与多个 http 请求节点链接起来,一次构建一个部分的字符串。

您可以通过将字符串存储在 msg 对象而不是有效负载的另一个变量中来做到这一点。

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

于 2015-10-22T18:21:24.480 回答