UStackUStack
Decoy icon

Decoy

Decoy 是原生 macOS 模擬伺服器,可在本機建立 API 與 webhook 模擬:定義端點、查看請求並回傳可設定的回應。

Decoy

Decoy 是什麼?

Decoy 是專為開發者設計的原生 macOS 模擬伺服器,用來在本機模擬 HTTP 端點與 webhook 行為。它讓你定義路由、查看傳入請求,並回傳受控的模擬回應,無需啟動外部服務即可測試 API 包裝、請求處理、重導向與故障模式。

Decoy 的核心目的是本機隨需測試:將客戶端指向 Decoy 的本地域名與埠號,觀察每個傳入請求,並調整端點回應,讓你的程式碼能針對你選擇的場景進行測試。

主要功能

  • 原生 macOS 應用程式,即時啟動:以 SwiftUI 應用程式執行,無需 Docker、雲端通道或設定步驟即可快速啟動。
  • 端點與請求/回應控制:定義方法 + 路徑組合,分組至專案中,選擇回應狀態碼、主體類型、標頭與選用延遲。
  • 即時請求檢視:每個傳入請求顯示標頭、主體、來源 IP、時間戳與請求識別碼 (UUID)。JSON 主體會自動格式化。
  • 參數化路徑與專案:支援路徑參數 (例如 /users/:id 匹配 /users/42),並將端點組織成專案。
  • 常見網頁情境的回應格式:選擇純文字、JSON、HTML、XML、檔案、空回應或重導向;重導向會自動設定 Location 標頭。
  • 瀏覽器與 CORS 支援:瀏覽器請求「直接可用」,自動新增 CORS 標頭。支援重導向狀態碼 (301、302、307、308)。
  • 請求/回應快照與匯出:查看每個請求實際回傳內容,並匯出為 cURL、JavaScript fetch 或 Ruby。
  • 透過 SQLite 的持久請求記錄:請求立即寫入 SQLite,即使應用程式意外結束也不會遺失資料。

如何使用 Decoy

  1. 從 Mac App Store 安裝 Decoy,然後在 macOS 14 Sonoma 或更新版本上啟動應用程式。
  2. 建立或選擇專案,然後使用方法與路徑組合定義端點。
  3. 設定每個端點的模擬回應:指定狀態碼、選擇主體類型 (包含 JSON、HTML、XML 或檔案)、新增標頭,並選用設定延遲。
  4. 將你的應用程式或測試工具指向 Decoy 的本地域名與埠號 (產品描述中提及 decoy.my:8998)。
  5. 從客戶端或瀏覽器發送請求。Decoy 會顯示每個傳入請求細節,並在下一個請求套用回應變更。

使用情境

  • 測試 webhook 處理與邊緣案例:發送 webhook 請求至 Decoy,確認程式碼如何處理不同狀態碼、回應主體、標頭與模擬延遲。
  • 驗證 API 包裝邏輯:針對你控制的模擬端點測試 API 客戶端,調整回應酬載與標頭,同時觀察每個傳入請求。
  • 重現重導向行為:設定端點回傳重導向 (含適當 Location 標頭),測試應用程式如何遵循或回應 301/302/307/308。
  • 開發期間提供類似靜態內容:使用檔案回應直接提供圖片、PDF 或其他檔案,或設定主體類型為 HTML 提供完整網頁。
  • 擷取並重用真實請求/回應互動:使用請求快照與匯出的 cURL 或 fetch/Ruby 等價物,重現問題或分享範例。

常見問題

Decoy 需要 Docker、雲端通道或設定檔嗎? 不需要。產品描述指出無需 Docker、雲端通道或設定檔。

支援哪些平台與版本? Decoy 需要 macOS 14 Sonoma 或更新版本。

模擬回應變更如何套用? 編輯 (如更新 JSON、標頭或狀態碼) 會在下一個傳入請求生效。

Decoy 能處理瀏覽器請求與 CORS 嗎? 可以。支援瀏覽器請求,並自動新增 CORS 標頭。

請求資料儲存在哪裡? 請求立即寫入 SQLite,產品描述指出即使應用程式意外結束也不會遺失資料。

替代方案

  • 本機 HTTP 模擬伺服器(通用工具):這類工具也提供本機端點與可控回應,通常使用設定檔或容器;Decoy 強調原生 macOS UI,無需 Docker。
  • 專用 API 模擬平台(託管服務):這些可在網路模擬端點,但通常需外部設定與部署,而非執行本機模擬伺服器。
  • 請求/回應存根程式庫或測試框架:有些團隊在測試套件中使用程式碼存根;這與 Decoy 的獨立本機伺服器不同,後者具 UI 可查看請求與編輯回應。
  • 具模擬支援的 API 測試工具:有些互動式 API 用戶端支援模擬或本機模擬;工作流程可能不同,尤其在專用請求查看、專案與回應快照/匯出功能方面。