JSONPath 查詢和 JSONPath 建置工具

JSONPath 建置工具是一個協助程式,公用程式在建立 REST API 主動和效能監控工具時會用到,此外在 REST API 主動和效能應用程式監控 (APM) 元件中也會用到。這個工具會協助使用者選取他們想要監控的 JSON 元素,然後為所選的 JSON 元素產生一個 JSONPath 查詢。

JSONPath 查詢可以兩種形式來撰寫,括號標記法和點標記法,例如:

本主題將說明 JSONPath 建置工具的工作流程以及支援的語法。

在 REST API 效能監控工具中的 JSONPath 建置工具

從監控工具資料庫加入一個新的 REST API 效能監控工具時,[新增 REST API 效能監控工具] 視窗將會開啟。此視窗中包含兩個相關的區塊,REST APIJSONPATH,這兩個區塊會用在 JSONPath 建置工具中。

提供一個 REST API 效能監控工具名稱、說明和逾時值,然後按照這些步驟來使用 JSONPath 建置工具:

  1. 指定您想要取得效能數據的 REST API URL 端點。
  2. (選擇性步驟)使用編輯自訂頁首按鈕來加入自訂標頭。
  3. (選擇性步驟)如果您需要隱藏憑證錯誤訊息,請選取 [忽略憑證錯誤]
  4. (選擇性步驟)選取 [使用匿名存取] 來略過傳送 REST API 認證到端點。這個選項只有在不需要身分驗證即可存取 REST API 端點時才適用。
  5. 按一下 [JSONPath 建置工具] 按鈕。如果 REST API URL 是有效的,將會開啟 JSONPath 建置工具視窗。在此視窗中,您可選取您想要監控效能資料的數值欄位。下面的影像顯示 JSONPath 建置工具視窗,影像中的範例為「兒童圖書館」資料:

jsonpath_builder

  1. 按一下 [驗證] 來在端點上執行一項測試。如果效能監控工具可從 JSONPATH 端點值擷取一個數值結果,那麼就可儲存該監控工具並將其新增到效能監控工具資料庫中。下面幾個影像顯示 JSONPath 傳回一個有效數值到效能監控工具的範例,該 JSONPath 是使用 JSONPath 建置工具所建置的。

REST_API_Perf_Monitor_jsonpath

在 REST API 主動監控工具中的 JSONPath 建置工具

從監控工具資料庫加入一個新的 REST API 主動監控工具時,[新增 REST API 主動監控工具] 視窗將會開啟。此視窗中包含兩個相關的區塊,REST API離線條件,後者包含了 JSONPath 查詢資料格以供作為為監控工具新增離線條件的方法。當您選取放大鏡按鈕時,JSONPath 查詢資料格會用到 JSONPath 建置工具。

使用 REST API 主動監控工具時,您可以定義多個 JSONPath 查詢以為監控工具評估一個離線狀態。此外不同於效能監控工具的是,主動監控工具支援針對數值、布林值、字串類型的變數來驗證離線條件。

在 JSONPath 建置工具中選取 JSON 元素時,JSONPath 查詢資料格會自動偵測元素的類型,並將其填入在 JSONPath 查詢資料格的類型資料欄中。

提供一個 REST API 主動監控工具名稱、說明和逾時值,然後按照這些步驟來使用 JSONPath 建置工具:

  1. 指定您想要取得效能數據的 REST API URL 端點。
  2. (選用)使用編輯自訂頁首按鈕來加入自訂標頭。
  3. (選用)如果您需要隱藏憑證錯誤訊息,請選取 [忽略憑證錯誤]
  4. (選擇性步驟)選取 [使用匿名存取] 來略過傳送 REST API 認證到端點。這個選項只有在不需要身分驗證即可存取 REST API 端點時才適用。
  5. 選取會將監控工具回報為離線的 HTTP 回應碼。
  6. 選取 + 按鈕來在 JSONPath 查詢資料格中新增一行。新增的行預設會是空白的。
  7. 在 JSONPath 查詢資料格中的空行內按兩下,然後選取放大鏡按鈕來開啟 JSONPath 建置工具。如果沒有勾選 [使用匿名存取] 按鈕的話,那麼這將會提示您輸入一個 REST API 認證。接著將會開啟 JSONPath 建置工具視窗。在此視窗中,您可選取您想要監控離線條件的數值、布林值或字串類型端點。下面幾個影像顯示一個關於圖書館書籍的 API 樣本的離線條件範例:
    REST_API_Active_Monitor_jsonpath
  8. 按一下 [儲存] 來將監控工具加入「主動監控工具資料庫」。

在 REST API 效能應用程式監控 (APM) 元件中的 JSONPath 建置工具

REST API 效能應用程式監控 (APM) 元件運作的方式類似於 REST API 效能監控工具,不過另外還多了用於數值回應的警告和離線臨界值條件。REST API APM 元件可被附加到一部測試裝置上並經過驗證。下面幾個影像顯示一個數值 API 端點附帶著警告和離線臨界值的範例:
REST_API_APM_perf

在 REST API 主動應用程式監控 (APM) 元件中的 JSONPath 建置工具

REST API 主動應用程式監控 (APM) 元件運作的方式類似於 REST API 主動監控工具,不過另外還多了一部可供附加 REST API 主動 APM 元件及驗證監控工具的測試裝置。

進階 JSONPath 查詢

如前所述,JSONPath 查詢可以兩種形式來撰寫,括號標記法和點標記法,例如:

如果有一個「books」的 JSON 陣列,其中陣列中第一個項目的名稱有「The Cat in the Hat」,那麼您可透過輸入以下其中一個 JSON 查詢來存取該值:

除了支援使用 JSONPath 建置工具來為 JSON 元素產生 JSONPath 查詢之外,您也可在 JSONPath 查詢中使用過濾條件來撰寫進階的查詢以驗證 JSON 回應。過濾條件可使用比較運算子來執行作業。除此之外,也提供「長度」屬性來傳回 JSON 陣列的長度。

這些屬性可用於 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)]

舉例來說,如果「The Cat in the Hat」所包含的書本數量小於 3 本,那麼對於主動監控工具和主動 APM 元件來說,離線條件將會是一個包含「The Cat in the Hat」的字串。

小於或等於

<=

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

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

 

大於

>

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

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

舉例來說,如果「The Cat in the Hat」包含的書本數量大於 1 本,那麼對於主動監控工具和主動 APM 元件來說,離線條件可能會是一個不包含 1(「The Cat in the Hat」的 bookId/書本 ID)的數字。

大於或等於

>=

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

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

 

長度

.length

['books'].length

$.books.length

傳回 JSON 陣列的長度。