API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Mocking APIs
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Mocking APIs

Mock 腳本

進階功能
Mock Scripts 是一項 進階功能,需要 JavaScript 知識。對於大多數使用案例,Smart Mock 和 Mock Expectations 就足夠了。如果您剛開始接觸 API Mocking,可以跳過這篇文章。
雖然 Smart Mock 和 Mock Expectations 可以處理大多數場景,但有時您需要保持請求和回應資料之間 邏輯關係 的 Mock 回應。Mock Scripts 允許您編寫 JavaScript 程式碼來根據請求參數動態自訂 Mock 回應。
在這篇文章中,我們將學習如何將 Mock Scripts 用於 Pet Store API,以建立保持資料一致性的智慧 Mock 回應。

1. 什麼是 Mock Scripts?#

Mock Scripts 是在收到 Mock 請求時執行的 JavaScript 程式碼片段。它們允許您:
存取請求資料:讀取路徑參數、查詢參數、標頭和 Body
修改回應資料:在返回之前更改 Smart Mock 生成的回應
保持關係:確保回應資料與請求參數匹配(例如:回應 ID 與請求 ID 匹配)
新增邏輯:實作條件邏輯、計算和資料轉換

何時使用 Mock Scripts#

在以下情況下使用 Mock Scripts:
請求-回應一致性:回應 ID 應與請求 URL 中的 ID 匹配
邏輯關係:回應欄位取決於請求參數(例如:年齡影響收養費)
動態計算:根據請求資料計算值
條件回應:根據請求條件返回不同資料
注意:Mock Scripts 僅適用於 Smart Mock。它們不適用於 Mock Expectations 或回應範例。

2. Mock Scripts 如何運作#

基本流程是:
1.
Smart Mock 生成 初始 Mock 回應,基於您的 API 規範
2.
Mock Script 執行 並可以存取請求 ($$.mockRequest) 和生成的回應 ($$.mockResponse)
3.
Script 修改 回應(根據需要)
4.
最終回應 返回給客戶端

可用物件#

$$.mockRequest:存取請求資料(參數、標頭、Body)
$$.mockResponse:存取和修改 Mock 回應

3. 範例 1:在回應中匹配請求 ID#

讓我們從一個簡單的範例開始:確保回應中的寵物 ID 與請求 URL 中的 ID 匹配。

場景#

當您請求 GET /pets/pet_123 時,回應應該包含 "id": "pet_123"——而不是 Smart Mock 生成的隨機 ID。

步驟 1:打開 Mock 分頁#

1.
在您的 Pet Store API 中打開 GET /pets/{id} 端點
2.
切換到 "Mock" 分頁
3.
向下捲動找到 "Mock Script" 部分
image.png

步驟 2:啟用並編寫腳本#

1.
打開 script toggle(腳本開關)
2.
編寫以下腳本:
3.
點擊 "Save"
image.png

步驟 3:測試 Mock#

1.
使用帶有特定寵物 ID 的 Mock URL:GET /pets/pet_1Nv0FGQ9RKHgCVdK
2.
回應現在將包含 "id": "pet_1Nv0FGQ9RKHgCVdK" 而不是隨機 ID
3.
self 連結也將使用正確的 ID
腳本前(僅 Smart Mock):
{
  "id": "pet_abc123xyz",  // 隨機 ID
  "name": "Luna",
  "species": "DOG",
  ...
}
腳本後:
{
  "id": "pet_1Nv0FGQ9RKHgCVdK",  // 匹配請求 ID
  "name": "Luna",
  "species": "DOG",
  "links": {
    "self": "https://api.petstoreapi.com/v1/pets/pet_1Nv0FGQ9RKHgCVdK"
  },
  ...
}

4. 範例 2:動態分頁#

讓我們建立一個更複雜的範例:確保分頁中繼資料與請求參數匹配。

場景#

對於 GET /pets?page=2&limit=10,回應應該包含:
pagination.page = 2(來自請求)
pagination.limit = 10(來自請求)
pagination.totalPages 基於總項目數計算

腳本#

結果#

當您請求 GET /pets?page=2&limit=10 時,回應將有:
{
  "data": [...],
  "pagination": {
    "page": 2,
    "limit": 10,
    "totalItems": 45,
    "totalPages": 5
  },
  "links": {
    "self": "https://api.petstoreapi.com/v1/pets?page=2&limit=10",
    "prev": "https://api.petstoreapi.com/v1/pets?page=1&limit=10",
    "next": "https://api.petstoreapi.com/v1/pets?page=3&limit=10",
    "last": "https://api.petstoreapi.com/v1/pets?page=5&limit=10"
  }
}

5. 範例 3:基於請求的條件邏輯#

您也可以使用 Mock Scripts 根據請求條件返回不同的回應。

場景#

對於 GET /pets/{id},如果寵物 ID 以 pet_test_ 開頭,則返回帶有可預測資料的特殊測試寵物。

腳本#

結果#

請求:GET /pets/pet_test_123 → 返回可預測的測試資料
請求:GET /pets/pet_1Nv0FGQ9RKHgCVdK → 返回帶有匹配 ID 的 Smart Mock 資料

6. 常見使用案例#

存取請求資料#

修改回應資料#


7. 關鍵重點#

Mock Scripts 允許您使用 JavaScript 自訂 Smart Mock 回應
請求-回應一致性:確保回應資料與請求參數匹配
動態邏輯:實作計算、條件邏輯和資料轉換
僅適用於 Smart Mock:Mock Scripts 不適用於 Mock Expectations 或回應範例
存取請求資料:使用 $$.mockRequest 讀取參數、標頭和 Body
修改回應資料:使用 $$.mockResponse 在返回之前更新 Mock 回應
強大的工具:實現保持邏輯關係的逼真 Mock 回應

Mock Scripts 為您提供了建立保持資料一致性和邏輯關係的智慧 Mock 回應的靈活性。結合 Smart Mock、Mock Expectations 和 Cloud Mock,您擁有了 Apidog 中用於 API Mocking 的完整工具包。
準備好繼續了嗎?讓我們在 章節總結 中回顧我們學到的內容。
Modified at 2025-12-29 12:07:25
Previous
Cloud Mock
Next
章節總結
Built with