UStackUStack
Decoy icon

Decoy

Decoy 是原生 macOS 模拟服务器,可在本地创建 API 与 Webhook 仿真:定义路由、查看请求并返回可配置响应,无需 Docker 或云隧道。

Decoy

Decoy 是什么?

Decoy 是专为开发者设计的原生 macOS 模拟服务器,用于在本地模拟 HTTP 路由和 Webhook 行为。它允许您定义路由、查看传入请求,并返回受控的模拟响应,从而测试 API 封装、请求处理、重定向和故障模式,而无需启动外部服务。

Decoy 的核心目的是本地按需测试:将客户端指向 Decoy 的本地域名和端口,观察每个到达的请求,并调整路由响应,让您的代码针对您选择的场景进行演练。

主要特性

  • 原生 macOS 应用,即时启动:作为 SwiftUI 应用运行,启动迅速,无需 Docker、云隧道或设置步骤。
  • 路由与请求/响应控制:定义方法 + 路径组合,按项目分组,然后选择响应状态码、主体类型、标头和可选延迟。
  • 实时请求检查:每个传入请求显示标头、主体、源 IP、时间戳和请求标识符(UUID)。JSON 主体自动格式化。
  • 参数化路径和项目:支持路径参数(例如 /users/:id 匹配 /users/42),并将路由组织到项目中。
  • 常见 Web 场景的响应格式:选择纯文本、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 处理和边缘情况:向 Decoy 发送 Webhook 请求,确认代码如何处理不同状态码、响应主体、标头和模拟延迟。
  • 验证 API 封装逻辑:针对您控制的模拟路由演练 API 客户端,同时调整响应负载和标头并观察每个传入请求。
  • 复现重定向行为:配置路由返回重定向(带适当 Location 标头),测试应用如何跟随或响应 301/302/307/308。
  • 开发期间提供静态内容:使用文件响应直接提供图像、PDF 或其他文件,或通过设置主体类型为 HTML 来提供完整 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 客户端支持模拟或本地仿真;工作流程可能不同,尤其是在专用请求查看、项目以及响应快照/导出功能方面。
Decoy | UStack