2017年2月5日日曜日

LogicFlow で HTTP クエリパラメータを受け取り利用する

LogicFlow の HTTP コネクタでは、? で接続されているクエリパラメータに対しても対応しています。これを利用すると、通常は JSON で値を渡さなくてはいけない API も、クエリパラメータを利用した値の利用が可能です。

本当は Flow だけで済まそうと思ったのですが、関数の記載が上手くいかなかったので、LogicApps → Flow と二段階で呼び出す形にて試してみました。

LogicApps 側では、HTTP Request を受けるトリガと、渡されたクエリパラメータを分解して Flow を呼び出す HTTP コネクタを設定します。

image

デザイナー上では、HTTP コネクタに謎の test1 という値が登場しています。これは CodeView で見てみると正体がわかります。

image

上記の赤枠で囲った部分が test1 の正体になります。

@triggerOutputs()['queries']['test1']

triggerOutputs 関数は、トリガから出力される値を取得する関数ですが、HTTP コネクタの場合は、呼び出された際に指定されたクエリパラメータが設定されてきます。その値は実行履歴で、トリガの未出力加工を参照すると確認できます。

image

queries という配列で、test1 と test2 の値が取得できているのがわかります。実際に呼び出した際には以下のようにしていました。

image

テストに用いたのは、Chrome アプリの Advanced Rest Client です。個人的には PostMan よりこっちの方が気に入っています(

上記のように、HTTP コネクタが生成した呼出し用の URL に、test1=aaaa&test2=bb というクエリパラメータを追加しているのがわかります。そしてそのパラメータから、test1 で指定された値を取得しているのが、先ほどの triggerOutputs 関数を用いた記述になります。

そしてその後に呼び出した Flow 側の LogicFlow は次のようにしています。

image

こちらも非常に簡潔に、HTTP Request トリガで受け取り、受け取った値をそのままプッシュ通知させています。スキーマについては、LogicApps 側で送る値を元に作成したものを張り付けているので、プッシュ通知コネクタでは値を選ぶだけで利用できています。

image

このようにすることで、クエリパラメータの値を抽出しプッシュ通知できたのが確認できました。

triggerOutputs 関数を用いてクエリパラメータを利用すると、JSON の値を使ってのやり取りが難しいケースでも、LogicFlow に値を受け渡すことが行いやすくなります。残念ながら Flow のデザイナ上では、記述しても上手く動いてもらえなかったので今回は LogicApps を起点としましたが、恐らくそのうち上手く動作するようになると思われます。

0 件のコメント:

コメントを投稿