【问题标题】:xmlhttp request in a node-red function node节点红色函数节点中的 xmlhttprequest
【发布时间】:2016-01-22 02:55:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    thnx 哈迪布,

    经过半天的搜索,我发现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;
    

    【讨论】:

      【解决方案2】:

      你应该避免在函数节点中做异步或阻塞的东西。

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        相关资源
        最近更新 更多