Format

フォーマットは、Qmonus SDKで利用するjsonschemaのformatタイプを拡張できるサービスです。プラグイン開発プロジェクト固有の単一パラメータのバリデーションをjsonschemaだけで実現できます。登録したformatは、API GatewayのAPIルーティングの入出力仕様に設定したり、Scenariorequest_validationのスキーマで設定することでパラメータをバリデーションすることができます。

フォーマットが保有する属性

  • name: フォーマットの名前を指定します。ユニークである必要があります。この名前をjsonschemaのformatで指定することで適用されます。

  • category: フォーマットのカテゴリを指定します。カテゴリはフォーマットを分類するための単なるラベルです。

  • code: フォーマットのチェック関数を記述します。チェック関数にはバリデーション対象となる単一パラメータが入力されてきます。この単一パラメータに対してチェックを行い、バリデーションがOKの場合はTrue、NGの場合はFalseを返却する関数を記述してください。

サンプル

  • フォーマットのcodeは以下のように定義します。
# ハイフンなしのUUID形式であることをバリデーションするフォーマットの例
def non_hyph_uuid(v):
    return True if re.compile(r"^[a-fA-F0-9]{32}\Z").match(v) else False
  • jsonschemaで利用する方法は、以下のようにformatキーに指定するだけです。
{
    "type": "object",
    "properties": {
        "id": {
            "type": "string",
            "format": "non_hyph_uuid"
        }
    },
    "required": [
        "id"
    ]
}

Tip

作成したフォーマットが正しく動作するかテストする場合は、Format組込みオブジェクトを使用してください。
Format組込みオブジェクトの詳細は、Docs » リファレンス » ビルトインオブジェクトを参照してください。

>>> print(Format.non_hyph_uuid(uuid.uuid1().hex))↵
... ↵
↵
True
>>>