2017年9月6日水曜日

HTTP Request コネクタの対応する JSON スキーマの機能

LogicFlow の HTTP Request コネクタでは、JSON スキーマを指定することにより受け取る値について色々指定ができるようになっています。スキーマ自体には実際のところ、桁数制限など色々な機能があるのですが、LogicFlow 側ではどこまで対応しているのかを調べてみました。

1.文字型

まずは文字型に対する状況です。

文字型では「桁数の制限」や「正規表現によるパターン指定」が JSON スキーマでは可能です。サンプルとして以下のスキーマを作成しました。

{
"description": "JSONスキーマを検証するサンプル",
"type": "object",
"properties": {
"string1": {
"type": "string"
},
"string2": {
"type": "string",
"minLength": 2,
"maxLength": 3
},
"string3": {
"type": "string",
"pattern": "^[0-9]{3}-[0-9]{4}$"
}
}
}
view raw sample1.json hosted with ❤ by GitHub

このスキーマを HTTP Request コネクタに設定し、別の LogicFlow から呼び出しを行ってみます。

image

LogicApps コネクタを利用すると、同一リージョンにある LogicFlow が呼び出せます。この時条件がもう一つあり、HTTP Request トリガで作成されている LogicFlow が、このコネクタから呼び出すことのできる LogicFlow となります。

image

実際に呼び出す LogicFlow を指定すると、このようにデザイナー上では各値の入力が可能になりますが、指定した桁数制限や正規表現によるパターン指定は動作していないのがわかります。

image

実行も問題なく行えていますので、文字型に対する各種制御は対応していないのがわかります。

2.数字型

次は数字型です。数字型では「入力範囲」「倍数の指定」が行えます。サンプルは次のように用意しました。

{
"description": "JSONスキーマを検証するサンプル2",
"type": "object",
"properties": {
"number1": {
"type": "number"
},
"number2": {
"type": "number",
"multipleOf": 1.0
},
"number3": {
"type": "number",
"minimum": 0,
"maximum": 10,
"exclusiveMinimum": true
},
"number4": {
"type": "number",
"minimum": 0,
"maximum": 10,
"exclusiveMaximum": true
}
}
}
view raw sample2.json hosted with ❤ by GitHub

image

デザイナー上では数字でないものをエラーとするよう動作しているのが確認できます。それ以外の指定については、文字型と同様に動作していない雰囲気です。

image

やはりこちらでも、各種制御は動作していませんでした。

3.全体に適用するもの

JSON スキーマでは、「利用可能な値を列挙」「必須項目」「依存項目」といった制御も行うことが可能です。以下のようなスキーマを作成しました。

{
"description": "JSONスキーマを検証するサンプル2",
"type": "object",
"properties": {
"other1": {
"type": "string",
"enum": ["value1", "value2", "value3"]
},
"other2": {
"type": "string"
},
"other3": {
"type": "string"
}
},
"required": ["other1"],
"dependencies": {
"other2": ["other3"]
}
}
view raw sample3.json hosted with ❤ by GitHub

image

値を列挙する enum は、このようにデザイナー側で対応されており、利用可能な値を選択できるようになっています。また required 指定で、必須項目としたものについても、デザイナー上で * が赤く表示されており、対応されています。

image

dependancy による依存設定(ある項目を入力するなら、この項目も必要という設定)ですが、こちらが対応されていないようです。実行結果もこれまで同様、値のチェックは行われずでした。

このような感じで、JSON スキーマでは色々機能があるのですが、LogicFlow デザイナーとして対応しているのは一部にとどまる模様です。それでも、required による必須項目指定と、enum による利用可能な値の列挙があるだけで、大分設定を行いやすいと思います。

実際に連携された値については、やはり LogicFlow 上で明確に値チェックを行うのがよい、ということになると思います。

0 件のコメント:

コメントを投稿