JSONata およびアセンブリー・アクション

API Gateway は、アセンブリー・アクションで JSONata 表記のサブセットをサポートします。

JSONata 表記は、以下のアセンブリー・アクションで使用できます。

以下の JSONata 関数がサポートされます。

集約関数
  • $average(array)
  • $max(array)
  • $min(array)
  • $sum(array)
配列関数
  • $append(array1, array2)
  • $count(array)
  • $reverse(array)
  • $sort(array [, function])
  • $zip(array1, ...)
ブール関数
  • $boolean(arg)
  • $exists(arg)
  • $not(arg)
数字関数
  • $abs(number)
  • $ceil(number)
  • $floor(number)
  • $formatBase(number [, radix])
  • $number(arg)
  • $power(base, exponent)
  • $round(number [, precision])
  • $sqrt(number)
オブジェクト関数
  • $keys(object)
  • $lookup(object, key)
  • $merge(array<object>)
  • $spread(object)
ストリング関数
  • $contains(str, pattern)
  • $join(array[, separator])
  • $length(str)
  • $lowercase(str)
  • $match(str, pattern [, limit])
  • $pad(str, width [, char])
  • $replace(str, pattern, replacement [, limit])
  • $split(str, separator [, limit])
  • $string(arg)
  • $substring(str, start[, length])
  • $substringAfter(str, chars)
  • $substringBefore(str, chars)
  • $trim(str)
  • $uppercase(str)
  • 標準の JSONata 表記に対する以下の機能拡張を使用できます。 各拡張は、API コンテキストの部分に対応しています。 API コンテキストの変数については、 API コンテキスト変数を参照してください。
    表 1. JSONata に対する機能拡張
    内線 可変 説明
    $header(name) message.headers.name メッセージ・ヘッダー
    $httpVerb() request.verb 要求の HTTP メソッド
    $operationID() api.operation.id 操作の ID
    $operationPath() api.operation.path 操作のパス
    $queryParameter('name')
    • request.parameters.name.locations

      サポートされるキーワードはqueryです。

    • request.parameters.name.values
    request.parameters.name.locations内のqueryのインデックスを検索し、request.parameters.name.values[index]を返します。ここで、[index]はロケーション内のqueryの値です。 パラメーター値は URL にデコードされません。
    $statusCode() message.status.code 状況コード
    $storageType([arg]) variable.body

    API コンテキスト内に任意の変数を指定できます。 変数を指定しない場合は、デフォルトの変数message.bodyが使用されます。

    メッセージのストレージ・タイプ。 サポートされる値は、binaryjsonstream、またはxmlです。
    $urlParameter('name')
    • request.parameters.name.locations

      サポートされるキーワードは、pathおよびqueryです

    • request.parameters.name.values
    request.parameters.name.locations内のpathqueryのインデックスを検索し、request.parameters.name.valuesからのpathqueryの両方の値を含む単一の配列を返します。 URL に path と query の両方のパラメーター値が含まれる場合、 配列に含まれる値の順序は、最初が path、続いて query になります。 各パラメーター・タイプの値は、受け取った順に追加されます。 パラメーター値は URL にデコードされます。
    例えば、以下の URL には path パラメーターと query パラメーターの両方の値が含まれています。
    http://example.com/petstore/cats/adopt?breed=Sphynx&breed=Siamese
    $urlParameter('breed')URLは、以下の値の配列を返します。
    [cats, adopt, Sphynx, Siamese]

    この例では、URLに/petstore/{breed}/{breed}として構成されたAPIパスが含まれています。ここで、breedはAPIパスのパス・パラメーターになるように構成されています。 その結果、catsおよびadoptが出力に組み込まれます。

    $xpath(path, xpathExpression) API コンテキスト内で任意の書き込み可能変数を指定できます。 xpathExpressionはリテラル・ストリングでなければなりません。 XPath 式の使用を許可します。 以下の例では、ソース内のすべての price 要素が指定されています。
    $xpath($, '//price')
  • & (連結) ナビゲーション演算子を使用できます。
  • 以下の JSONata 数値演算子を使用できます。
    • +(加算)
    • -(減算)
    • *(乗算)
    • /(除算)
    • %(モジュロ)
  • 以下の JSONata 比較演算子は、数値またはストリングに使用できます。
    • !=
    • <
    • >
    • <=
    • >=
  • 括弧を使用して、シーケンスの配列への変換、演算子の優先順位の指定、コンテキスト値の複合式の計算を行うことができます。
  • 配列範囲と述部式を使用できます。
  • 単一アスタリスク (*) および二重アスタリスク (**) のワイルドカード文字を使用できます。