在現實世界的 API 工作流程中,您很少只使用單個端點。大多數任務需要一系列操作——建立資源、檢索資源、更新資源等等。每個步驟通常依賴於前一步驟的資料。在本文中,我們將學習如何使用 Apidog 串聯多個端點,演示一個完整的工作流程:建立寵物,查詢其詳細資訊,並更新其資訊。我們將使用 變數 在請求之間傳遞資料,使工作流程無縫且自動化。
1. 工作流程:建立、查詢和更新#
讓我們使用 Pet Store API 演練一個實際場景:1.
使用 POST /pets 建立寵物 — 這返回一個帶有 id 的寵物物件
2.
使用 GET /pets/{id} 查詢寵物詳細資訊 — 使用步驟 1 中的 ID
3.
使用 PUT /pets/{id} 更新寵物 — 修改寵物的資訊
關鍵挑戰在於每個步驟都需要前一步驟的資料。如果沒有變數,您必須手動在請求之間複製並貼上寵物 ID。使用 Apidog 的變數提取功能,這變得自動化。
2. 步驟 1:建立寵物並提取 ID#
首先,讓我們建立一隻寵物並將其 ID 提取到變數中,以便在後續請求中使用。建立寵物#
1.
在您的 Apidog 專 案中打開 "Create a pet" 端點 (POST /pets)。
3.
在請求 Body 部分,您可以使用 Apidog 的 "Auto-generate" 功能根據 API 規範自動生成請求 Body。點擊 "Auto-generate" 按鈕,Apidog 將建立一個包含所有必需欄位的範例請求 Body。
{
"name": "Luna",
"species": "DOG",
"breed": "Golden Retriever",
"ageMonths": 24,
"size": "LARGE",
"color": "Golden",
"gender": "FEMALE",
"goodWithKids": true,
"goodWithPets": true,
"adoptionFee": 150.00,
"description": "Friendly golden retriever looking for an active family",
"status": "AVAILABLE"
}
{
"id": "pet_1Nv0FGQ9RKHgCVdK",
"name": "Luna",
"species": "DOG",
"breed": "Golden Retriever",
"ageMonths": 24,
"status": "AVAILABLE",
...
}
將寵物 ID 提取為變數#
現在我們需要從回應中提取 id 並將其儲存為變數:1.
在 Run 分頁中,向下捲動到 Post Processors 部分(在回應區域下方)。
2.
點擊 "Add PostProcessor" 並選擇 "Extract Variable"。
3.
Variable Scope: 選擇 "Global Variables Shared within Project"(以便它可以在其他端點中使用)
Extraction Source: 選擇 "Response JSON"
JSONPath Expression: 輸入 $.id 以從回應中提取 id 欄位
5.
現在,再次發送請求。請求完成後,寵物 ID 將儲存在 {{pet_id}} 變數中。
6.
您可以透過檢查回應區域中的 Console 分頁來驗證提取是否有效,該分頁將顯示確認變數已提取的日誌。
JSONPath 語法:表達式 $.id 意味著「從 JSON 物件的根獲取 id 欄位」。如果回應結構是嵌套的(例如 {"data": {"pet": {"id": "..."}}}),您將使用 $.data.pet.id 代替。
3. 步驟 2:查詢寵物詳細資訊#
現在我們已將寵物 ID 儲存在變數中,我們可以使用它來查詢寵物詳細資訊。1.
在您的 Apidog 專案中打開 "Get a pet" 端點 (GET /pets/{id})。
3.
在 id 的路徑參數欄位中,不要輸入值 ,而是輸入:{{pet_id}}
4.
當您將滑鼠懸停在 {{pet_id}} 上時,Apidog 將顯示當前值(我們在步驟 1 中提取的寵物 ID)。
6.
發送請求時,Apidog 將自動將 {{pet_id}} 替換為實際的寵物 ID 值(例如 pet_1Nv0FGQ9RKHgCVdK)。
https://api.petstoreapi.com/v1/pets/pet_1Nv0FGQ9RKHgCVdK
4. 步驟 3:更新寵物資訊#
最後,讓我們更新寵物的資訊。這演示了如何在請求 Body (JSON) 中使用變數。1.
在您的 Apidog 專案中打開 "Update Pet" 端點 (PUT /pets/{id})。
3.
在 id 的路徑參數欄位中,輸入:{{pet_id}}(與步驟 2 相同)。
4.
在請求 Body 中,您可以在 JSON 中使用變數。例如,要更新寵物的描述同時保留其他欄位,您可以使用:
{
"id": "{{pet_id}}",
"name": "Luna",
"species": "DOG",
"breed": "Golden Retriever",
"ageMonths": 24,
"size": "LARGE",
"color": "Golden",
"gender": "FEMALE",
"goodWithKids": true,
"goodWithPets": true,
"adoptionFee": 150.00,
"description": "Updated: Friendly golden retriever looking for an active family. Great with children!",
"status": "AVAILABLE"
}
注意我們在 JSON Body 中使用了 {{pet_id}}。當您發送請求時,Apidog 將用實際的寵物 ID 值替換它。在 JSON 中使用變數:在 JSON 請求 Body 中使用變數時,請確保將字串變數用引號括起來(例如 "{{pet_id}}")。對於像數字或布林值這樣的非字串值,您不需要引號(例如,對於數字使用 {{quantity}})。
5. 查看實際請求#
發送帶有變數的請求後,您可以查看 Apidog 是如何解析它們的:1.
在回應面板中,切換到 "Actual Request" 分頁。
例如,如果您在路徑參數中使用了 {{pet_id}},您將在 URL 中看到實際的寵物 ID。如果您在 JSON Body 中使用了 {{pet_id}},您也會在那裡看到實際值。
6. 關鍵重點#
串聯端點 意味著使用一個請求的輸出來作為下一個請求的輸入。
使用 Post Processors 從回應中 提取變數 以捕獲後續請求所需的資料。
使用 {{variable_name}} 語法在路徑參數、查詢參數、標頭和請求 Body 中 使用變數。
JSONPath 表達式(如 $.id)允許您從 JSON 回應中提取特定欄位。
變數作用域 很重要:如果您想在不同端點之間使用變數,請使用「全域變數」。
查看實際請求 以查看變數如何被解析並驗證您的工作流程是否正常運行。
透過使用變數將多個端點串聯起來,您可以構建自動化複雜 API 操作的完整工作流程。這是建立測試場景和自動化 API 測試的基礎,我們將在未來的文章中探討這些內容。