【免费下载链接】apiarkPrivacy-first API platform built with Tauri v2. No login, no cloud, ~60 MB RAM. A lightweight Postman alternative.项目地址https://gitcode.com/gh_mirrors/ap/apiark点击查看免费下载ApiArk 是一个隐私优先Privacy-first的开源 API 平台定位为轻量级 Postman 替代品无需登录、不依赖云端、空闲内存占用仅约60 MB安装包约20 MB冷启动 2 秒。它由Tauri v2 Rust React 19构建本文将深入拆解这套桌面端架构是如何做到小、快、省的。先来看它的实际效果——一个标准的 REST GET 请求界面一、为什么放弃 ElectronTauri v2 的架构优势传统 API 工具如 Postman、Insomnia大多基于 Electron。Electron 会为每个应用捆绑一份完整的 Chromium约 100~200 MB这是体积和内存虚胖的根源。ApiArk 选择了Tauri v2其核心思路是后端用 Rust 编写编译成原生二进制承担所有网络请求、文件读写、脚本执行等重活前端使用系统自带的 WebviewmacOS 上是 WKWebViewWindows 上是 WebView2Linux 上是 WebKitGTK不再捆绑浏览器内核通信前后端通过 IPC进程间通信的 invoke 机制调用这一架构直接换来了官方数据二进制约 20 MB、空闲内存 ~60 MB、冷启动 2s详见 README.md 的 Performance 章节。对比竞品数据docs/benchmarks/competitors.json工具框架安装包空闲内存启动时间PostmanElectron200 MB350 MB12sInsomniaElectron140 MB250 MB6sBrunoElectron85 MB180 MB4.5sApiArkTauri v2~20 MB~60 MB2s二、双端技术栈React 19 前端 Rust 后端前端React 19 Vite 6 Zustand桌面端前端位于 apps/desktop/src/技术选型见 apps/desktop/package.jsonReact 19UI 框架配合 TypeScript 严格类型检查Vite 6开发服务器与构建工具vite.config.ts开发模式运行在 1420 端口Zustand轻量状态管理19 个 store 分文件组织在 apps/desktop/src/stores/如 tab-store、runner-storeMonaco EditorVS Code 同款代码编辑器用于请求体/脚本编辑Radix UI Tailwind CSS 4无障碍组件库与原子化样式前端代码的启动优化同样关键——apps/desktop/src/App.tsx 中对所有对话框设置、导入、Mock 服务器、AI 助手等使用了React.lazy懒加载这些组件只有首次打开时才会下载对应代码块主界面启动路径上完全不包含它们的重量。后端Rust 全栈能力Rust 后端位于 apps/desktop/src-tauri/src/依赖清单见 apps/desktop/src-tauri/Cargo.toml。它不是一个薄薄的胶水层而是承担了几乎所有核心能力能力实现源码位置HTTP 请求引擎reqwest tokiorustls 纯 Rust TLShttp/client.rsgRPC 调用tonic prostgrpc/client.rsWebSocket / SSE / MQTTtokio-tungstenite 等websocket/manager.rsJS 脚本执行rquickjsQuickJS沙箱scripting/engine.rs本地 Mock 服务器axummock/server.rs历史/审计数据库rusqliteSQLitestorage/history.rs文件监听notify debouncerwatcher/collection_watcher.rs一个有趣的细节脚本引擎没有引入庞大的 Node.js 或 Deno而是内嵌了QuickJSscripting/engine.rs并且为每个用户脚本设置 32MB 内存上限、1MB 栈限制——既是安全沙箱也是体积控制。三、20MB 安装包是怎么炼成的体积优化来自不做与精做两端1. 不捆绑 Chromium——这是最大的一笔节省Tauri 直接复用系统 Webview。2. 精简的系统依赖插件——只启用了 6 个 Tauri 官方插件shell、dialog、fs、notification、updater、deep-link注册于 lib.rs没有多余功能。3. 发布配置的极限编译——Cargo.toml 末尾的 release profile[profile.release] opt-level s # 优化体积s而非极致速度3 lto thin # 跨 crate 链接时优化 codegen-units 1 # 单一代码生成单元优化更彻底 strip true # 剥离调试符号4. 前端代码分割——所有二级对话框懒加载首屏只加载核心模块。四、秒级启动冷启动 2s 的关键设计冷启动快的核心在于启动路径极短Rust 二进制天然冷启动快main()只调用apiark_lib::run()一行main.rsWindows 下还通过windows_subsystem windows隐藏控制台窗口避免额外的窗口闪烁数据加载是惰性的——SQLite 数据库、设置文件在 lib.rs 的启动阶段仅做轻量打开且对损坏的数据库有自动备份重建的容错逻辑不会卡死启动窗口状态提前恢复——最大化状态、窗口尺寸从state.json读回窗口创建后立即呈现用户感知上无白屏前端懒加载确保首屏 bundle 最小化五、前后端如何通信类型安全的 IPC 桥Tauri 的通信模式是命令式调用Rust 侧定义#[tauri::command]函数通过tauri::generate_handler!宏统一注册——在 lib.rs 中可以看到 100 个命令按模块分组注册HTTP 请求、集合管理、Git、Mock、调度器等前端侧通过 src/lib/tauri-api.ts 的invokeT(cmd, args)泛型函数发起调用返回类型直接来自共享的 packages/types/ 类型包这种设计的好处类型安全贯穿两端——前后端共享 TypeScript 类型Rust 侧有 serde 序列化编译期就能发现不匹配浏览器兼容降级——tauri-api.ts检测window.__TAURI_INTERNALS__前端可以直接用pnpm dev在浏览器中开发 UI不必每次启动完整 Tauri 应用大幅提升开发体验六、数据架构Local-FirstYAML 即请求ApiArk 的另一大架构特色是本地优先存储每个请求就是一个.yaml文件集合就是目录完整规范见 docs/schema.mdmy-api-project/ ├── .apiark/ │ ├── apiark.yaml # 集合配置 │ ├── .env # 密钥建议 gitignore │ └── environments/ # 多环境变量 └── users/ └── create-user.yaml # 一个请求 一个 YAML 文件Git 友好纯文本格式可 diff、可合并、可 code reviewREADME.md 甚至内置了完整的 Git 面板支持commands/git.rs无锁定应用数据库历史、审计也是开放的 SQLite 文件存放在~/.apiark/官方承诺离开 ApiArk数据随你走七、Monorepo 全景一套代码四个产品ApiArk 使用 pnpm workspace Turbo 组织 monorepopnpm-workspace.yaml、turbo.jsonRust 核心逻辑被复用到多个产品产品位置说明桌面应用apps/desktop/Tauri v2 主应用CLI 工具apps/cli/纯 Rust可在 CI 中跑集合apiark run ./collectionMCP Serverapps/mcp-server/供 AI 编辑器调用的 Model Context Protocol 服务VS Code 插件apps/vscode-extension/编辑器内查看/编辑集合共享层 packages/types/ 提供跨端 TypeScript 类型packages/importer/ 提供多格式导入逻辑——桌面端支持从 Postman、Insomnia、Bruno、OpenAPI、HAR、cURL 一键导入src-tauri/src/importer/。八、安全细节为隐私而生的防御式设计既然主打隐私优先架构上也有对应的安全设计严格 CSPtauri.conf.json 配置了内容安全策略connect-src仅允许 IPC 和必要的更新端点杜绝任意外联更新签名校验updater 插件内置 Minisign 公钥pubkey只接受官方签名的更新包崩溃报告本地化panic 钩子将崩溃报告写入本地~/.apiark/crash-reports/lib.rs不上传任何遥测脚本沙箱隔离用户 JS 在 QuickJS 独立 Runtime 中运行内存与栈均设限总结这套架构的可借鉴之处ApiArk 用一份 Cargo.toml 和一份 tauri.conf.json 就回答了API 工具为什么必须又重又慢选对框架——Tauri v2 用系统 Webview 替代捆绑 Chromium是体积减半的前提Rust 做重活——网络、gRPC、脚本、Mock、存储全部下沉到 Rust前端只做交互编译期瘦身——opt-level s LTO strip发布配置决定最终二进制大小懒加载一切——前端代码分割 后端惰性初始化保住 2s 冷启动数据属于用户——YAML SQLite 的透明存储既是卖点也是架构约束如果你正在寻找一款低内存占用的 Tauri API 客户端或者想研究Rust React 桌面端架构的最佳实践ApiArk 的 apps/desktop/src-tauri/ 目录值得逐行阅读。赞分享【免费下载链接】apiarkPrivacy-first API platform built with Tauri v2. No login, no cloud, ~60 MB RAM. A lightweight Postman alternative.项目地址https://gitcode.com/gh_mirrors/ap/apiark点击查看免费下载相关推荐Tabularis架构深度解析React 19前端与Rust Tauri v2后端如何构建跨平台SQL工作台Tabularis架构深度解析React 19前端与Rust Tauri v2后端如何构建跨平台SQL工作台 Tabularis 是一款开源桌面 SQL 工作Youwee视频下载器架构全解析Tauri 2 React 19 Rust 如何实现轻量跨平台Youwee视频下载器架构全解析Tauri 2 React 19 Rust 如何实现轻量跨平台 Youwee 是一款免费的开源跨平台视频下载器基于Quarkus深度解析如何实现毫秒级启动的Java微服务架构Quarkus深度解析如何实现毫秒级启动的Java微服务架构 Quarkus是一个革命性的云原生Java框架专为容器化环境设计能够实现毫秒级启动时间和极低后端云原生Web框架微服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?