Node-REDでhttp requestノードでAPI作りPowerAppsのカスタムコネクタと連携するメモです。
目的
今回はNode-REDのHTTP APIをPowerAppsのカスタムコネクタとデータ連携して、お互いの連携具合の雰囲気を掴んでみたいと思います。
もちろん、最終的に Node generator for Node-RED をさらに加えると、より良くなることを見据えつつ、一旦シンプルに試してみます。
全体像
このように、Node-RED上で簡単なPOSTとGETのやり取りができるAPIを用意し、その橋渡しのできる swagger 定義を使って、Power Appsのカスタムコネクタに解釈できるようにしてシンプルな連携を作ります。
Swagger の定義
まず、Power Appsのカスタムコネクタで読み込むために、Swaggerを定義します。
Swagger定義ファイルの書き方(超手抜き編) – Qiita ここを参考にさらにシンプルに。
swagger: '2.0' info: version: 'first version' title: Sample Api host: <今回のNode-REDのURL>:1880 basePath: / schemes: - http consumes: - application/json produces: - application/json paths: /swagger: x-swagger-pipe: swagger_raw /test_post: post: x-swagger-router-controller: echo operationId: test_post parameters: - in: body name: body schema: type: object responses: 200: description: Success schema: type: object summary: test_post API /test_get: get: x-swagger-router-controller: echo operationId: test_get parameters: - in: query name: param type: string responses: 200: description: Success schema: type: object summary: test_get API
こちらの、
host: <今回のNode-REDのURL>:1880
を、今回のNode-REDのURLに変更しておきましょう。
このSwagger YAMLを Swagger Editor でJSON変換
Swagger Editor に移動します。
Swagger YAMLをコピーアンドペーストします。
この操作でJSONに変換して、 swagger.json というファイル名で手元に保存しておきます。
Node-REDで簡単なAPIを作る
Swaggerに合わせたAPIをNode-REDで作ります。
このようなフローです。
[{"id":"6b62b5a6.d4f04c","type":"http in","z":"b0cabdd3.d4f0b","name":"","url":"test_post","method":"post","upload":false,"swaggerDoc":"","x":580,"y":240,"wires":[["220a42b3.ef807e","21e53c23.3c33a4"]]},{"id":"220a42b3.ef807e","type":"debug","z":"b0cabdd3.d4f0b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":770,"y":220,"wires":[]},{"id":"98514748.5974f8","type":"http response","z":"b0cabdd3.d4f0b","name":"","statusCode":"","headers":{},"x":930,"y":260,"wires":[]},{"id":"9c65d03b.91f37","type":"http in","z":"b0cabdd3.d4f0b","name":"","url":"test_get","method":"get","upload":false,"swaggerDoc":"","x":570,"y":340,"wires":[["543eb0a0.c00d1","922da619.43cea8"]]},{"id":"543eb0a0.c00d1","type":"debug","z":"b0cabdd3.d4f0b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":770,"y":320,"wires":[]},{"id":"444e7318.e6a0fc","type":"http response","z":"b0cabdd3.d4f0b","name":"","statusCode":"","headers":{},"x":930,"y":360,"wires":[]},{"id":"21e53c23.3c33a4","type":"change","z":"b0cabdd3.d4f0b","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"australia\":[\"wombat\",\"wallaby\",\"kangaroo\",\"koala\"]}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":260,"wires":[["98514748.5974f8"]]},{"id":"922da619.43cea8","type":"change","z":"b0cabdd3.d4f0b","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"message\":\"Hello!\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":360,"wires":[["444e7318.e6a0fc"]]}]
このフローJSONデータでインポートできます。
test_post
こちらの返答するデータは以下の通りです。
change ノードでこのようなJSONオブジェクトを返答しています。
test_get
こちらの返答するデータは以下の通りです。
change ノードでこのようなJSONオブジェクトを返答しています。
PowerAppsに Swagger JSON データを読み込む
PowerAppsに行きます。
カスタムコネクタを選択。
カスタムコネクタの一覧ページで、
「Open API ファイルをインポートします」を選択して、カスタムコネクタの新規作成を行います。
コネクタ名はわかりやすい名前で。Open API ファイルは先ほどのダウンロードしておいた swagger.json ファイルを指定します。
続行をクリックして読み込みましょう。
設定の確認
読み込まれれば、基本大丈夫なはずですが、確認しておきましょう。
はじめに、全般の設定。
セキュリティ設定は認証なし。このあたりもSwaggerで反映できるのがいいですね。
定義も設定されているはず。
これでコネクタの作成を押して、今回のSwaggerで作られたカスタムコネクタを保存します。
テストしてみる
早速テストしてみましょう。再度、テストのところまで行って、コネクタの作成をします。
新しい接続をクリックします。
作成ボタンを押します。
再度、テストのページに戻ってくると無事、接続が登録できました。
test_post のテスト
このようにやり取りがテストできて疎通成功です。
paramに body に test という文字を入れていますが、Node-RED側でデータを受け取れています。
test_get のテスト
このようにやり取りがテストできて疎通成功です。
paramに sample という文字を入れていますが、Node-RED側でデータを受け取れています。