JSONPath クエリと JSONPath Builder

JSONPath Builder は、REST API アクティブモニタおよびパフォーマンスモニタや、REST API アクティブおよびパフォーマンスアプリケーション監視 (APM) コンポーネントを作成する際に使用するヘルパーユーティリティです。このツールを使用すると、監視する JSON 要素を選択し、選択した JSON 要素についての JSONPath クエリを生成することができます。

JSONPath クエリは、角括弧表記とドット表記の 2 つの形式で記述することができます。例を次に示します。

このトピックでは、JSONPath Builder ツールのワークフローとサポートされている構文について説明します。

REST API パフォーマンスモニタにおける JSONPath Builder

モニタライブラリから新しい REST API パフォーマンスモニタを追加すると、[Add REST API Performance Monitor (REST API パフォーマンスモニタの追加)] ウィンドウが開きます。このウィンドウには、JSONPath Builderツールで使用される [REST API][JSONPATH] という 2 つの関連セクションがあります。

REST API パフォーマンスモニタの名前、説明、およびタイムアウト値を入力します。JSONPath Builder ツールを使用するには、以下の手順に従います。

  1. パフォーマンス指標を取得する REST API URL エンドポイントを指定します。
  2. (オプション) [カスタムヘッダーの編集] ボタンを使用してカスタムヘッダーを追加します。
  3. (オプション) 証明書のエラーメッセージを表示しない場合は、[認証エラーを無視する] を選択します。
  4. (オプション) エンドポイントに REST API 認証情報を送信しないようにするには、[匿名アクセスを使用する] を選択します。このオプションは、REST API エンドポイントがアクセスに認証を必要としない場合にのみ有効です。
  5. [JSONPath Builder] ボタンをクリックします。REST API URL が有効だった場合は、[JSONPath Builder] ウィンドウが開きます。このウィンドウで、監視するパフォーマンスデータの数値フィールドを選択できます。次の画像は、「子のライブラリ」データが表示されている [JSONPath Builder] ウィンドウの例を示しています。

jsonpath_builder

  1. [確認] をクリックして、エンドポイントでテストを実行します。パフォーマンスモニタが JSONPATH エンドポイント値から数値結果を抽出できる場合は、モニタを保存してパフォーマンスモニタライブラリに追加することができます。次の画像は、JSONPath Builder を使用して作成した、パフォーマンスモニタに有効な数値を返す JSONPath の例を示しています。

REST_API_Perf_Monitor_jsonpath

REST API アクティブモニタにおける JSONPath Builder

モニタライブラリから新しい REST API アクティブモニタを追加すると、[Add REST API Active Monitor (REST API アクティブモニタの追加)] ウィンドウが開きます。このウィンドウには、[REST API][停止条件] という 2 つの関連セクションがあり、[停止条件] には、モニタの停止条件を追加するための JSONPath クエリグリッドがあります。JSONPath クエリグリッドで虫眼鏡ボタンを選択すると、JSONPath Builder を使用できます。

REST API アクティブモニタの使用中に、複数の JSONPath クエリを定義して、モニタの停止状態を評価することができます。また、パフォーマンスモニタとは異なり、アクティブモニタでは、数値、ブール値、および文字列の変数に対して停止条件を検証することができます。

JSONPath Builder で JSON 要素を選択すると、JSONPath クエリグリッドにその要素の種類が自動的に検出されて、JSONPath クエリグリッドの [種類] 列に入力されます。

REST API アクティブモニタの名前、説明、およびタイムアウト値を入力します。JSONPath Builder ツールを使用するには、以下の手順に従います。

  1. パフォーマンス指標を取得する REST API URL エンドポイントを指定します。
  2. (オプション) [カスタムヘッダーの編集] ボタンを使用してカスタムヘッダーを追加します。
  3. (オプション) 証明書のエラーメッセージを表示しない場合は、[認証エラーを無視する] を選択します。
  4. (オプション) エンドポイントに REST API 認証情報を送信しないようにするには、[匿名アクセスを使用する] を選択します。このオプションは、REST API エンドポイントがアクセスに認証を必要としない場合にのみ有効です。
  5. モニタを停止中と報告する HTTP 応答コードを選択します。
  6. JSONPath クエリグリッドに行を追加するには、[+] ボタンを選択します。デフォルトでは、行は空です。
  7. JSONPath Builder を開くには、JSONPath クエリグリッドの空白行の中をダブルクリックし、虫眼鏡ボタンを選択します。これにより、[匿名アクセスを使用する] ボタンがオフになっている場合は、REST API 認証情報を入力するよう求めるプロンプトが表示されます。[JSONPath Builder] ウィンドウが開きます。このウィンドウでは、監視する停止条件の数値、ブール値、および文字列のエンドポイントを選択できます。次の画像は、ライブラリブックのサンプル API の停止条件の例を示しています。
    REST_API_Active_Monitor_jsonpath
  8. [保存] をクリックして、モニタをアクティブモニタライブラリに追加します。

REST API パフォーマンスアプリケーション監視 (APM) コンポーネントにおける JSONPath Builder

REST API パフォーマンスアプリケーション監視 (APM) コンポーネントの動作は、REST API パフォーマンスモニタと似ていますが、数値応答に警告しきい値と停止しきい値の条件が追加されています。REST API APM コンポーネントをテストデバイスに接続して検証することができます。次の画像は、数値の API エンドポイントと警告および停止しきい値の例を示しています。
REST_API_APM_perf

REST API アクティブアプリケーション監視 (APM) コンポーネントにおける JSONPath Builder

REST API アクティブアプリケーション監視 (APM) コンポーネントの動作は、REST API アクティブモニタと似ていますが、REST API アクティブ APM コンポーネントを接続してモニタを検証できるテストデバイスが追加されています。

高度な JSONPath クエリ

前述したとおり、JSONPath クエリは、角括弧表記とドット表記の 2 つの形式で記述することができます。例を次に示します。

'books' という JSON アレイがあり、アレイの最初の項目の名前が「The Cat in the Hat」である場合、次のいずれかの JSON クエリを入力してその値にアクセスできます。

JSONPath Builder を使用して JSON 要素についての JSONPath クエリを生成できることに加え、JSONPath クエリのフィルタを使用して JSON 応答を検証する高度なクエリを記述することもできます。フィルタを使用すると、比較演算子を使用した演算を行うことができます。また、JSON アレイの長さを返す「length」プロパティも使用できます。

これらのプロパティは、JSONPath クエリのフィルタで使用することで、条件に基づいて値を返したり、必要のない値を除外したりすることができます。

Note: トークンセレクターは、キャプチャしたオブジェクトの長さが 1 の場合のみ、値を返します。JSONPath クエリで複数の値が返されると、解析エラーが発生します。

サポートされている比較演算子を以下の表に示します。

比較演算子名

比較演算子

例 (角括弧表記)

例 (ドット表記)

注:

等しい

==

['books'][?(@.name == 'The Cat in the Hat')]['copies']

$.books[?(@.name == 'The Cat in the Hat')].copies

このクエリは、存在する「The Cat in the Hat」のコピー数を返します。

等しくない

!=

['books'][?(@.name != 'The Cat in the Hat')]['copies']

$.books[?(@.name != 'The Cat in the Hat')].copies

 

より小さい

<

['books'][?(@.copies < 3)]

$.books[?(@.copies < 3)]

アクティブモニタとアクティブ APM コンポーネントの場合、停止条件は、「The Cat in the Hat」を含む文字列で、「The Cat in the Hat」を含むコピーが 3 つより少ない場合などになります。

以下

<=

['books'][?(@.copies <= 3)]

$.books[?(@.copies <= 3)]

 

より大きい

>

['books'][?(@.copies > 1)]['bookId']

$.books[?(@.copies > 1)].bookId

アクティブモニタとアクティブ APM コンポーネントの場合、停止条件は、1 (「The Cat in the Hat」の bookId) を含まない数字で、「The Cat in the Hat」を含むコピーが 1 より多い場合などになります。

以上

>=

['books'][?(@.copies > 1)]['bookId']

$.books[?(@.copies > 1)].bookId

 

長さ

.length

['books'].length

$.books.length

JSON アレイの長さを返します。