柴犬 API (Shibe.Online) がなくなってしまったので Dog API に Node-RED でつないでみるメモ

柴犬 API (Shibe.Online) がなくなってしまったので Dog API に Node-RED でつないでみるメモです。

背景

昨年の中ごろですが、public-apis/public-apis: A collective list of free APIs を見ていたら、大好きな 柴犬 API (Shibe.Online) がなくなってしまいました。

try-dog-api-using-node-red_07.png

こんな風に、運営が終わってドメインが買い取られたような挙動になっています。かなしい。

try-dog-api-using-node-red_00.jpg

ということで、似たような API で返すデータが近い public-apis 由来で Dog API があったので Node-RED でつないでみます。

Dog API もシンプルに取得できる

try-dog-api-using-node-red_12.jpg

こちらにある通りで GET リクエストで https://dog.ceo/api/breeds/image/random にアクセスすると、

{
    "message": "画像URL",
    "status": "success"
}

として取得できます。シンプル。

Node-RED で取得してみる

フローを作ってみます。

try-dog-api-using-node-red_03.png

まず inject ノードを配置します。

try-dog-api-using-node-red_02.png

つづいて http request ノードを配置して inject ノードの後につなぎます。

try-dog-api-using-node-red_08.png

http request ノードをダブルクリックして以下のように設定します。

  • メソッド
    • GET
  • URL
    • https://dog.ceo/api/breeds/image/random
  • 出力形式
    • JSON オブジェクト

try-dog-api-using-node-red_09.png

change ノードを配置して http request ノード の後につなぎます。

try-dog-api-using-node-red_11.png

change ノードをダブルクリックして以下のように設定します。

  • 代入タイプ
    • 値の代入
  • 代入対象
    • msg.payload
  • 代入する
    • msg.payload.message

try-dog-api-using-node-red_01.png

メニュー > パレットの管理 > ノードの追加 で node-red-contrib-image-output を検索してノードをインストールします。

try-dog-api-using-node-red_10.png

node-red-contrib-image-output ノードを配置して change ノード の後につなぎます。

try-dog-api-using-node-red_06.png

デプロイをします。

動かしてみる

try-dog-api-using-node-red_04.png

inject ノードのボタンをクリックして動かしてみましょう。

try-dog-api-using-node-red_05.jpg

Dog API にアクセスできて犬の画像が取得できました!

柴犬だけじゃなく様々なわんこが見れます!