ブロックを積みながら(68) Node-RED、HTTP in / outノードその1

Joseph Halfmoon

前回 TCP in / out ノードをやってみたので、今回は HTTP in / out です。2つを直接接続すれば一応ノードとしての動作確認はできるのですが実用になりません。やっぱり高水準です。in と out の間に処理を挟みたいです。それにリクエストを投げる側にも準備がいる、と。まあ改良した実験はまた今度と。

※「ブロックを積みながら」投稿順 index はこちら

今回実験のフロー

今回実験のフローは以下です。テスト対象のHTTP in ノードで受け取った HTTPリクエストを msg に載せて、そのまま HTTP out ノードにスルーで渡すだけ。何が msg に載せられているのか覗き見するために途中にDebugノードを挟んであります。

flow

ノードの設定

HTTP in ノードの設定は最小です。受け取るメソッドはGET。そしてURLは /get_testです。あとはお名前つけただけ、その他は何もなし。

INsetting

HTTP out ノードの設定はお名前を付けただけ。機能はデフォルトのまま。

OUTsetting

実機動作を観察

先ほどのHTTP in ノードで設定したURLにブラウザ(ことさら普段使わないOpera)で接続してみました。Node-REDが動作しているプライベートIPアドレス:ポート番号につづけて設定URLです。メソッドはGETですが、何もパラメータは渡してありません。送信すると {} が返ってきました。こんな感じ。

response00

そのときの「覗き見」用のデバッグノードの様子が以下に。注目すべきは payload のところが empty となっているところ。empty = {} みたいです。また、headersのところを広げてありますが、ブラウザから届いている http メッセージのあれこれが積み込まれていることが分かります。HTTP out ノードはこれら情報を「当て」にして、そこにレスを返す仕組みのようです。この msg パケットを加工して out してやることが必須と。

Debug00

GETに設定してあるのに、パラメータの指定がないのは何なのでブラウザに以下のように入力してみました。

http://192.168.2.121:1880/get_test?abc=123

送信後、ブラウザの画面からはパラメータ部分が消えてますが、レスポンスを見ると、送ったパラメータが JSON オブジェクト化されて戻ってきてます。

response01

そのときの「覗き見」の様子が以下に(下の方は省略。)payload に objectとして送信パラメータが載っていることが分かります。

Debug01

以上、最小設定の動作をみると

  • HTTP out ノードに HTTPらしいレスポンスを送信させるには流れてくる msg パケットを処理してHTML生成して payload に載せておく必要がある。
  • HTTP in ノードに POST などの動作をさせるためには、リクエストを送る側で準備しておかねばならない

当たり前ですがな。次回は上記ちょいと準備して「それなり」の動作を目指したいと思います。いつもながらゆるゆるだな。自分。

ブロックを積みながら(67) Node-RED、TCP in / out ノード へ戻る

ブロックを積みながら(69) Node-RED、HTTP in / out ノードその2 へ進む