Data Bank またはインライン式を使用して、リクエスト値を抽出してレスポンスを設定できます。

Data Bank によるリクエスト値の抽出

Data Bank ツールは、受信リクエストから JSON または XML 値を抽出し、関連するレスポンスの要素で値を使用できるようにします。任意のメッセージ レスポンダーの受信リクエストに Data Bank ツールを追加できます。Data Bank については、このドキュメントの他の箇所で詳しく説明しています。以下のリンクのいずれかを参照してください。

レスポンダー、出力ツール、検証ツールの追加

Data Exchange ツール

データ ソース値、変数、および抽出した値でツールをパラメータライズ

インライン式によるリクエスト値の抽出

インライン式を使用して、XPath 式を使用してリクエスト値を抽出できます。式を作成するときは、次の規則に従ってください。

  • 一重引用符 ( ' ) のみを使用してください。
  • 式内またはデフォルト値で中括弧 ( {} ) を使用しないでください。

受信リクエストに対して評価される式を使用して、テキスト コンテンツをパラメータライズできます。次の構文を使用します。

${{=expression}}

たとえば、受信リクエストの名前フィールドの値を抽出するために記述された式は、次を使用できます。

${{=/root/name/text()}} 

受信リクエストは、次のような XML ペイロードです。

<root>
   <name>my name</name>
</root>

日付と時刻を操作する関数

関数を使用して、正または負のオフセット値を設定し、日付または時刻を前後に移動することで、日時を操作できます。'1y 2M 34d 567h 8m 9s' の形式を使用して、オフセットする年/月/日/時間/分/秒を指定します。これらのオフセットは正でも負でもよく、単位はどれが欠けてもよく、単位間のスペースは無視されます。たとえば、次の各オフセットは、日付を 1 年、1 か月、および 1 日進めます。

'1y1M1d'
'1y 1M 1d'
'+1y1M1d'

逆に日付を 1 年、1 か月、1 日戻すには、先頭にマイナス (-) を付けます。例:

'-1y1M1d' 

日付と時刻関数は、1 つまたは 2 つの形式パラメーターを取ります。入力側と出力側で異なる形式が必要な場合は、2 つのパラメーターを使用します。Java の日付形式が使用されるため、以下に示す例はどれも使用可能です。

'yyyy-dd-MM'
'ddMMyyyy'
'yyyyMMdd HH:mm'
'dd-MM-yyyy HH:mm:ss'

関数の例

日付と時刻の関数をどのように作成するかは、どの日付と時刻からオフセットするか (現在の時刻または指定した時刻)、入力と出力に同じ日時形式を使用するかどうかなど、いくつかの要因によって決まります。

現在時刻からのオフセット

sv:date-math('offset', 'outFormat')

現在時刻をオフセットし、指定された形式で返します。たとえば、

${{=sv:date-math('-1y 2d 3h', 'yyyy-MM-dd HH:mm:ss')}}

これは現在の時刻から 1 年 2 日 3 時間後の日付を返します。

指定された日付から同じ形式でのオフセット

sv:date-math('offset', 'format', 'date')

指定された日付を指定された形式でオフセットし、同じ形式で返します。たとえば、

${{=sv:date-math('1y', 'yyyy-MM-dd', '2022-08-11')}}

これは '2023-08-11' を返します。

指定された日付から異なる形式でのオフセット

sv:date-math('offset', 'outFormat', 'date', 'inFormat')

指定された日付を指定の inFormat でオフセットし、指定の outFormat で返します。たとえば、

${{=sv:date-math('1y', 'MM/yyyy', '2022-08-11', 'yyyy-MM-dd')}}

これは '08/2023' を返します。

XPath の使用

パラメーターは、期待値に解決される XPath 式として渡すこともできます。例:

sv:date-math('1y', 'yyyy-MM-dd', /root/date/text()) 
sv:date-math(/root/offset/text(), 'MM/yyyy', /root/date/text(), 'yyyy-MM-dd')

すべての関数は sv 名前空間内にあります。サポートされている他の XPath 式と同様に使用できます。例:

"nextYear" : "${{=sv:date-math('1y', 'yyyy-MM-dd', /root/date/text())#2023-01-01}}"

関数が何かを評価できない場合 (たとえば、指定された XPath 式が値として評価されない場合)、式は指定のデフォルト値を返します。デフォルト値が指定されていない場合は "" を返します。たとえば、

"${{=sv:date-math('1y', 'yyyy-MM-dd', /root/date/text())#2000-01-01}}"

この式が返す内容は、リクエスト ペイロードに含まれる日付要素によって異なります。日付要素 2022-08-11 が含まれているとします。式は 2023-08-11 を返します。しかし、リクエスト ペイロードに日付要素がない場合は、式は 2000-01-01 を返します。

エラーが原因で (たとえば無効なオフセット形式など) 関数を評価できない場合は、エラーが返されます。

ヘッダーまたは URL から情報を抽出する関数

サポートされているいくつかの関数のうちのひとつを使用して、 ペイロードの一部ではない情報をリクエストから抽出することができます。 具体的には、ヘッダーまたは URL から抽出します。

関数の例 

URL 全体、URL の指定されたパスセグメント、または URL パラメーターを抽出することができます。ヘッダーの抽出も可能です。

URL の抽出

sv:url()

リクエストの宛て先の完全な URL を返します。例:

"http://localhost:9080/path1/path2/?param1=val1$param2=val2"

ヘッダーの抽出

sv:header('headerName')

ヘッダーの値を返します。同名のヘッダーが複数ある場合は、インデックスで区別できます。たとえば、

${{=sv:header('name', 2)}}

これは、ヘッダー name の 2 番目に出現する値を返します。同名のヘッダーが複数あり、インデックスで区別しない場合は、最初に出現したヘッダーの値が返されます。

URL パラメーターの抽出

sv:url-parameter('parameterName')

その URL パラメーターの値を返します。同名のパラメーターが複数存在する場合、インデックスで区別することができます。たとえば、

${{=sv:url-parameter('name', 2)}}

これは、URL パラメーター name の 2 番目に出現した値を返します。同名のパラメーターが複数あり、インデックスで区別しない場合は、最初に出現したパラメーターが返されます。

URL パス セグメントの抽出

sv:url-path(index)

指定されたインデックスの URL パス セグメントを返します。たとえば、

${{=sv:url-path(0)}}

これは最初のパスセグメントを返します。前述の URL の例 http://localhost:9080/path1/path2/?param1=val1$param2=val2 の場合、これは path1 が返されることを意味します。

XPath の使用

パラメーターは、期待される型に解決される XPath 式として渡すこともできます。例:

sv:header(/root/headerName/text(), /root/index/text())

すべての関数は sv 名前空間内にあります。サポートされている他のインライン式と同様に使用できます。例:

"nameValue" : "${{=sv:header('name')#foo}}"

関数が期待どおりに評価できない場合 (たとえば、指定されたヘッダー値がない場合)、式は指定されたデフォルト値を返します。デフォルト値が指定されていない場合は "" を返します。たとえば

"${{=sv:header('header1')#defaultHeader1Value}}"

これは、header 1 が存在する場合は header1Value を返し、存在しない場合は defaultHeader1Value を返します。

レスポンダーのインライン式の生成

レスポンダーのリクエスト テンプレートに基づいてメッセージ レスポンダーのインライン式を生成することで、レスポンス ペイロードのパラメータライズを高速化できます。この機能は、リテラル複数のレスポンス、または シーケンス レスポンス 入力モードを使用するメッセージ レスポンダーで利用できます。

いくつかの前提条件があります。

  • メッセージ レスポンダー (または個々の複数/シーケンス レスポンス) のリクエスト テンプレートに入力する必要があります。詳細については、「メッセージ レスポンダーの概要」の「リクエスト テンプレート」を参照してください。
  • リクエスト ペイロードには、レスポンス ペイロードの値と一致する値が含まれている必要があります。
  • 適切な日時形式が [日付フォーマット] 設定パネルに入力済みです。これにより、日時を表す文字列値が正しく認識され、解析されるようになります。「その他の設定 」の「日付フォーマット」を参照してください。 

インライン式を生成するには、次の操作を行います。

  1. メッセージ レスポンダーを開きます。
  2. [レスポンス] タブをクリックします。レスポンダーの入力モードが複数レスポンスまたはシーケンス レスポンスの場合、[メッセージ] タブをクリックします。
  3. テキスト ボックス内を右クリックし、[インライン式の生成] を選択します。
    • レスポンダーの入力モードが複数レスポンスまたはシーケンス レスポンスの場合、左側のパネルでレスポンスを右クリックして [インライン式の生成] を選択することもできます。
  4. 変更を保存します。


  • No labels