柴犬画像 API につないでみよう
Node-RED パレットにはじめから多彩な接続ノードがあります。 WEB まわりで使われる HTTP / WebSocket など揃えています。
API は HTTP でつなぐことが多いですが Node-RED にも HTTP 関連ノードあります。
さまざまな API につなぐ例として、柴犬画像を取得してみることも試してみます。
Node-RED で public-apis の柴犬画像 API につないで表示させるメモ – 1ft-seabass.jp.MEMO https://www.1ft-seabass.jp/memo/2020/09/04/nodered-connect-shibainu/
こちらを元に進めてみます。
フローのタブを追加して今回のフローをはじめる
Node-RED ではフローをタブで分けて作業できます。今回のフローは新しいタブで進めましょう。処理としては同じ enebular 内の処理です。
こちらの+ボタンからフローのタブを作成します。
新しい名前のフローができるので、こちらで進めます。
inject ノードを配置
パレットから inject ノードを配置します。
http request ノードを配置
パレットから http resuest ノードを探します。このノードは、HTTPリクエストを送信し、レスポンスを返します。
inject ノードの横に配置します。
inject ノードとつなぎます。
http request ノードの設定
さきほど配置した http resuest ノードをダブルクリックしてプロパティを表示します。
shibe.online https://shibe.online/ の仕様は、GETリクエストでURL http://shibe.online/api/shibes とつなぎに行くと、柴犬画像が取得できますので、それに合わせてプロパティを以下に設定します。
- メソッド
- GET
- URL
- 名前
- shibe.online
- 出力形式
- JSON オブジェクト
出力形式を JSON オブジェクトに変更するのは、すでにリクエストが JSON で来ることでが分かっているので、この後 JSON として扱うことで、今後のデータを扱いやすくします。
完了ボタンをクリックしてワークスペースに戻りましょう。
一度デバッグをしてみる
ここまで出来たら、名前を変更することで shibe.online となった 先ほどの http request ノードのあとに debug ノードを配置してつなげましょう。
デプロイします。
inject ノードのボタンをクリックして、inject ノードからデータを発生させて、http request ノードが shibe.online にアクセスしてデータを受信して debug ノードにデータが届くか試してみましょう。
デバッグタブにデータが来るか確認しましょう。
JSON であればこちらの三角ボタンをクリックすることで、中のデータ構造を確認できます。
["https://cdn.shibe.online/shibes/ee05ff710dc406157fa3fbca514b132c95d555dd.jpg"]
今回の場合は、配列のデータで 1 つだけ柴犬画像 URL が入っています。
データの流れを変更できる change ノードを配置
http request ノードに change ノードをつなぎます。change ノードはデータの流れを変更できます。
パレットでは近くに似ている switch ノードがあるので、間違えないように配置してください。
http request ノードに change ノードをつなぎます。
change ノードの設定
change ノードをノードをダブルクリックしてプロパティを表示します。
msg.payload に変更する対象の値を、まず、msg にします。
対象の値は payload[0] にします。
["https://cdn.shibe.online/shibes/ee05ff710dc406157fa3fbca514b132c95d555dd.jpg"]
先ほどの柴犬画像 URLが配列がきていて URL が一つだけ入っているものを指定するために、payload の 0 番目の値ということで payload[0] にしています。
完了ボタンをクリックしてワークスペースに戻りましょう。
画像を表示する node-red-contrib-image-output ノードを追加する
ここまでで、柴犬画像の画像URLを 1つ表示することができます。
画像 URL が入ってくると画像を表示する node-red-contrib-image-output ノードをインストールします。
右のメニューから メニュー > パレットの管理 と移動します。
ノードの追加タブをクリックしてノード追加画面に移動します。
ノードを検索するテキストエリアに node-red-contrib-image-output を入力してノードを検索して ノードを追加 ボタンをクリックします。
追加 ボタンをクリックします。
インストールされました。
node-red-contrib-image-output ノードをつなげる
node-red-contrib-image-output ノードをパレットから探します。
node-red-contrib-image-output ノードをパレットからワークスペースに配置します。
change ノードと node-red-contrib-image-output ノードのフローをつなぎます。
デプロイします。
動かしてみる
inject ノードのボタンをクリックして、動作確認してみましょう。
このように、柴犬 API からデータが取得でき、node-red-contrib-image-output ノードで画像が表示されます。
エクストラ
- node-red-contrib-image-output ノードのプロパティに Width 160 という画像の横幅を指定する値があるので 320 にして大きく画像を表示してみましょう。
- 柴犬画像 API 、実は他の動物も行けます。http request ノードのプロパティの URL を変更して、鳥 https://shibe.online/api/birds や、猫 https://shibe.online/api/cats を試してみましょう。
- 余裕があれば、柴犬画像 API などがあつまる public-apis https://github.com/public-apis/public-apis の紹介
次は
左のメニューから、次に進みましょう。