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

thnx Hardilb、

半日の検索の後、http-node を設定する直前にノードを配置することで、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

関数ノードで非同期またはブロックを行うことは避ける必要があります。

すべてを 1 つの関数ノードで実行しようとしないでください。複数の関数ノードを複数の http Request ノードでチェーンして、文字列を一度に 1 つずつ作成してください。

これを行うには、ペイロードの代わりに msg オブジェクトの別の変数に文字列を格納します。

注意すべきことの 1 つは、次の http Request ノードへの各呼び出しの前に、msg.headers をクリアする必要があることです。

于 2015-10-22T18:21:24.480 に答える