GitHub:github.com/berbicanes/… | 官网:apiark.dev
Tauri v2 + Rust + React | MIT 开源 | 支持 6 种协议 | 数据完全本地
为什么要做这个
2024 年,Postman 泄露了 30,000 个工作区的数据。
除此之外,它还要求强制登录、内存占用 300-800MB、启动需要 10-30 秒。
我只是想测个接口,不想把公司的 API 密钥交给某个云平台。
所以我做了 ApiArk。
性能对比
| 指标 | ApiArk | Postman |
|---|---|---|
| 内存占用 | ~60MB | 300–800MB |
| 启动时间 | <2 秒 | 10–30 秒 |
| 安装包大小 | ~20MB | ~200MB |
| 需要登录 | ❌ | ✅ |
| 数据存储 | 本地 YAML 文件 | 云端 |
| 遥测 | ❌ | ✅ |
功能一览
协议支持(6 种): REST、GraphQL、gRPC、WebSocket、SSE、MQTT
认证方式(9 种): OAuth 2.0、AWS Sig v4、Digest、NTLM、JWT、Basic、Bearer、API Key、自定义
其他功能:
- 脚本引擎:请求前/后脚本,支持 Chai.js 断言
- 集合运行器:CSV / JSON / YAML 数据驱动测试
- 本地 Mock 服务器:模拟延迟与错误响应
- 定时测试:基于 Cron 的监控 + 通知
- 导入支持:Postman、Bruno、Insomnia、Hoppscotch、OpenAPI、HAR
- CLI 工具:
apiark run,输出 JSON / JUnit / HTML 报告,可接入 CI/CD - 响应对比:并排比较 API 返回差异
- 代理抓包:拦截本地 HTTP/HTTPS 流量
- API 文档导出:HTML 或 Markdown
为什么用 YAML 存储
每一个请求就是本地文件系统上的一个 .yaml 文件:
name: 创建用户
method: POST
url: "{{baseUrl}}/api/users"
headers:
Content-Type: application/json
body:
type: json
content: |
{
"name": "{{userName}}",
"email": "{{userEmail}}"
}
assert:
status: 201
responseTime:
lt: 2000
这意味着:
- Git 友好 — 再也不会有 PR 里 40,000 行 JSON diff
- 人类可读 — 任何文本编辑器都能打开和编辑
- 无厂商锁定 — 就是普通文件,随时可以带走
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Rust(Tauri v2、reqwest、tokio、axum、tonic) |
| 前端 | React 19、TypeScript、Tailwind CSS、Monaco Editor |
| 存储 | YAML 文件 + SQLite(历史记录) |
| 脚本引擎 | rquickjs(沙盒化 JS 运行时) |
开源协议
MIT 许可证。你的数据永远属于你,没有任何锁定。
- GitHub:github.com/berbicanes/…
- 官网下载:apiark.dev/downloads
如果觉得有用,欢迎点个 Star ⭐