2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Logic Apps の Request トリガーで受け取った HTTP ヘッダを読み出す方法

Last updated at Posted at 2020-08-05

論よりコード (TL;DR)

Azure Logic Apps の Request トリガーで受け取った HTTP ヘッダは triggerOutputs()['headers'][HTTP_HEADER_KEY] で読み出せる。

例) User-Agent という HTTP ヘッダを読み出したければ

@{triggerOutputs()?['headers']?['User-Agent']}

と、アクションのフィールドに設定すればよい。

注) 書式としては triggerOutpus() だが、アクションのフィールドに指定する時は "式" として認識させるため @{ ... } で囲む。

解説

triggerOutputs() 関数は、トリガーで受け取ったアウトプットを構造として出力するため、[KEY] でオブジェクトを指定すれば値が読み出せる。

triggerOutputs() の確認方法

Logic Apps の [概要] > [実行の履歴] で "HTTP 要求の受信時" を開いた後、 "出力" の [未加工出力の表示] が triggerOutputs() で見ることができる構造となる。

image.png

curl -H "Content-Type: application/json" -H "X-Custom-1: cust-data1" -d '{"data": 3}' $URL

とした場合は、このような出力になる。
image.png

ここまで見なくとも、基本的な構造は 受信要求からコンテンツを参照する にも書かれているように headersbody をトップとした構造となっている。

キー参照に ? を挟むことで、存在しないキーへの参照の InvalidTemplate を回避できる

User-Agent を読み出す場合は

triggerOutputs()['headers']['User-Agent']

で良いのだが、この時 User-Agent が存在しない場合は InvalidTemplate が発生する。

キーが存在しない場合の InvalidTemplate を無視したいときに利用できるのが ? である。
キーが存在しない可能性がある参照の先頭に ? を入れるだけ。

triggerOutputs()['headers']?['User-Agent']

もちろん階層で指定も可能なため、

triggerOutputs()?['headers']?['User-Agent']

triggerOutputs()headers が無い場合、そしてその下の参照で user-agent がない場合、と表現可能。

キー名の大文字・小文字は無視される

triggerOutputs()['headers']['User-Agent']

となっていたら user-agent USER-AGENT どれでもマッチする。

最後に: Azure Logic Apps とは?

Azure Logic Apps(以下、Logic Apps) は、最近流行話題となっているノーコード・ローコードを実現するサービスです。
※ ノーコード・ローコード自体についてはノーコード・ローコードのあれこれの解説がわかりやすいかもです。

Logic Apps はトリガーによってワークフロー(アクションをつなげたロジック)を実行する仕組みとなっており、似ているものとしては Node-RED があります。

Request トリガー

トリガーは色々用意されてますが、中でもわかりやすいのは Request トリガーです。これを設定すると URL が発行され、その URL に HTTP リクエストすることでワークフローが起動できる、いわゆる Webhook1 です。

なんでこんなエントリーを?

SORACOM Beam では SIM に紐づいている番号 "IMSI" を X-SORACOM-IMSI として HTTP ヘッダに付けながらデータ転送できます。それが読めたら嬉しいよね!っていう理由です。

SORACOM Beam ではこんな HTTP ヘッダを付けることができます。詳しくは SORACOM Beam の開発者向けマニュアルをご覧ください。

header 意味
X-SORACOM-IMSI SIM の IMSI
X-SORACOM-IMEI 通信したモデムの IMEI
X-SORACOM-OPERATOR-ID SORACOM のアカウント(オペレーター) ID
X-SORACOM-TIMESTAMP SORACOM でデータを受け取ったタイムスタンプ(エポックミリ秒)
X-SORACOM-SIGNATURE SHA256 署名
X-SORACOM-GEO-POSITION 簡易位置測位機能による緯度経度

あとがき

ノーコード!ローコード!

EoT

  1. HTTPWebhook トリガー とは異なり、よりシンプルに実現できます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?