公共 API 和 CLI

使用官方 CLI 工具或直接使用 curl 请求,自动化 Mock 生成和测试环境。

手动创建一个模拟接口,偶尔一次没问题。但当每一次 CI 运行、每一个集成测试、每一个分支预览都需要属于自己的一次性端点时,你要的就是脚本化。公共 API 只是一个无需认证的 POST 请求,它返回一个 URL 和一枚一次性的管理令牌;而 quickmock 命令行工具不过是对这同一个调用的薄封装。两者都能把模拟接口变成流水线自己创建、自己使用、自己丢弃的东西,全程无需任何人打开浏览器。

如何安装命令行工具?

这个命令行工具是一个单独的 Go 二进制文件,没有任何运行时依赖。用 Go 工具链安装:

go install github.com/Deadsquirrel93/quickmock.dev/cmd/quickmock@latest

它会把 quickmock 可执行文件放进 $(go env GOPATH)/bin。如果这个目录还不在你的 PATH 里,请手动加上——新装的 Go 通常不会自动加入,而在 go install 成功之后立刻出现 command not found,几乎总是因为这一点,不会是别的原因。

服务端没有任何东西需要安装,也不需要写配置文件。如果你运行的是自己的 Quickmock 实例而不是 quickmock.dev,用 -url 把命令行工具指向它即可,其余参数的行为完全一致。

这个命令行工具具体做什么?

所有工作都集中在一个子命令里。create 接受与 API 相同的字段,只是以参数的形式传入:

quickmock create -m POST -s 201 -c application/json \
  -H 'X-Request-Id: abc' \
  -b '{"status":"created"}'

它会打印两行:模拟接口的公开 URL,以及它的一次性管理令牌。URL 是你的测试要调用的地址。管理令牌则是你之后编辑、延期、删除该模拟接口以及读取其私有日志所需要的凭证——它只显示这一次,无法找回,因此请在创建它的同一个步骤里把它取走,而不要留到下一步。

需要几个响应头就重复几次 -H,用法和 curl 完全一样。不含冒号的取值会被直接拒绝而不是被忽略,所以一个拼写错误会让这一步失败,而不会悄悄生成一个缺少响应头的模拟接口。

如何从流水线里创建模拟接口?

在流水线里,命令行工具往往是多余的一层依赖,而 API 只是一个请求。在准备步骤里创建模拟接口,把 URL 交给后续步骤,再让 TTL 替你收拾残局:

MOCK=$(curl -s -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{"method":"GET","response_status":200,"ttl_seconds":3600}')
echo "MOCK_URL=$(echo "$MOCK" | jq -r .url)" >> "$GITHUB_ENV"

把 ttl_seconds 设成接近任务实际运行时长的值。一个 TTL 为一小时的模拟接口会自行消失,这意味着被取消或失败的任务不会留下任何残留,你也永远不需要一个可能根本不会执行的清理步骤。

顺便把管理令牌挡在日志之外。curl -s 配合 jq -r .url 只会打印 URL;而把整个响应体打印出来,等于把一份可用的凭证写进了构建日志,项目里任何有权限的人都能读到。

通常会出什么问题?

  • 把管理令牌丢掉。它只出现在创建响应里,别处都没有。没有它,你既不能编辑、删除该模拟接口,也读不到它的私有日志,只能等它过期。
  • 每个测试用例建一个模拟接口。每个 IP 的活跃模拟接口数量限制是真实存在的,而一台 CI 运行器就是一个 IP。每个任务只建一个模拟接口,用具名变体或路由来区分不同用例。
  • 把 slug 写死在代码里。slug 是分配的,不是自选的。请从响应里读取 url 字段,并把它传下去。
  • 不设 TTL。不带 ttl_seconds 时,模拟接口按服务端默认值存活,远远长于当初需要它的那个任务。

何时使用此功能

手动创建非常适合快速原型设计,但 CI/CD 管道和自动化测试需要可复现的动态环境。API 和 CLI 允许您编写脚本即时创建、修改和拆除 Mock 端点,将生成的 URL 直接提供给测试套件。

创建模拟

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "POST",
  "response_status": 201,
  "response_body": "{\"status\":\"created\"}"
}'

调用它

curl -X POST https://quickmock.dev/m/<slug>

您将获得什么

{"status":"created"}

常见问题解答

我需要账号或者 API 密钥吗?
不需要。POST /api/mocks 无需认证:创建一个模拟接口除了请求本身不需要任何东西。认证是在这之后才出现的——该调用返回的管理令牌,保护的是你刚刚创建的这个模拟接口的编辑、删除和私有检查器。
任务结束后如何删除模拟接口?
发送 DELETE /api/mocks/<slug>,并把管理令牌放在 Bearer 请求头里。实践中,一个较短的 ttl_seconds 更可靠,因为过期机制同样能替那些在走到清理步骤之前就失败或被取消的任务收尾。
可以用 Go 以外的语言调用这个 API 吗?
可以。它就是普通的 HTTP 和 JSON,任何客户端都能用——命令行工具只是为 shell 和 Makefile 提供的便利,API 本身并不依赖它。API 参考文档列出了每一个端点,并附有可直接运行的 curl 示例。

构建您自己的模拟

创建模拟

相关指南

← 所有指南

最后更新: 2026-10-17