前回 TCP in / out ノードをやってみたので、今回は HTTP in / out です。2つを直接接続すれば一応ノードとしての動作確認はできるのですが実用になりません。やっぱり高水準です。in と out の間に処理を挟みたいです。それにリクエストを投げる側にも準備がいる、と。まあ改良した実験はまた今度と。
※「ブロックを積みながら」投稿順 index はこちら
今回実験のフロー
今回実験のフローは以下です。テスト対象のHTTP in ノードで受け取った HTTPリクエストを msg に載せて、そのまま HTTP out ノードにスルーで渡すだけ。何が msg に載せられているのか覗き見するために途中にDebugノードを挟んであります。
ノードの設定
HTTP in ノードの設定は最小です。受け取るメソッドはGET。そしてURLは /get_testです。あとはお名前つけただけ、その他は何もなし。
HTTP out ノードの設定はお名前を付けただけ。機能はデフォルトのまま。
実機動作を観察
先ほどのHTTP in ノードで設定したURLにブラウザ(ことさら普段使わないOpera)で接続してみました。Node-REDが動作しているプライベートIPアドレス:ポート番号につづけて設定URLです。メソッドはGETですが、何もパラメータは渡してありません。送信すると {} が返ってきました。こんな感じ。
そのときの「覗き見」用のデバッグノードの様子が以下に。注目すべきは payload のところが empty となっているところ。empty = {} みたいです。また、headersのところを広げてありますが、ブラウザから届いている http メッセージのあれこれが積み込まれていることが分かります。HTTP out ノードはこれら情報を「当て」にして、そこにレスを返す仕組みのようです。この msg パケットを加工して out してやることが必須と。
GETに設定してあるのに、パラメータの指定がないのは何なのでブラウザに以下のように入力してみました。
http://192.168.2.121:1880/get_test?abc=123
送信後、ブラウザの画面からはパラメータ部分が消えてますが、レスポンスを見ると、送ったパラメータが JSON オブジェクト化されて戻ってきてます。
そのときの「覗き見」の様子が以下に(下の方は省略。)payload に objectとして送信パラメータが載っていることが分かります。
以上、最小設定の動作をみると
- HTTP out ノードに HTTPらしいレスポンスを送信させるには流れてくる msg パケットを処理してHTML生成して payload に載せておく必要がある。
- HTTP in ノードに POST などの動作をさせるためには、リクエストを送る側で準備しておかねばならない
当たり前ですがな。次回は上記ちょいと準備して「それなり」の動作を目指したいと思います。いつもながらゆるゆるだな。自分。