字节笔记本

2026年2月22日

Yaak - 开源桌面 API 客户端

本文介绍 Yaak,一个基于 Tauri、Rust 和 React 构建的桌面端 API 客户端。它支持 REST、GraphQL、WebSocket、gRPC 和 Server-Sent Events 等多种协议,以隐私优先、离线优先为设计理念,是 Postman 和 Insomnia 的有力替代品。

项目简介

Yaak 是由 Greg Schier 开发的开源 API 客户端,采用 MIT 许可证。该项目在 GitHub 上已获得超过 17.9k stars,是一个活跃维护的高质量项目。

与其他 API 客户端不同,Yaak 坚持以下核心理念:

  • 隐私优先:无遥测、无数据收集
  • 离线优先:无需联网即可使用全部功能
  • 无云锁定:数据完全由用户掌控
  • 社区驱动:通过社区购买许可证和赞助维持开发

核心特性

🌐 支持多种 API 协议

  • REST:完整的 HTTP 请求支持
  • GraphQL:内置 GraphQL 查询编辑器
  • WebSocket:实时双向通信
  • gRPC:高性能 RPC 框架支持
  • Server-Sent Events (SSE):服务器推送事件

📥 数据导入与迁移

Yaak 支持从主流 API 工具导入数据:

  • Postman Collections
  • Insomnia
  • OpenAPI / Swagger
  • cURL 命令

🔐 安全与认证

  • OAuth 2.0 / JWT / Basic Auth
  • 自定义认证插件
  • 敏感值加密存储
  • 操作系统密钥链集成

📁 工作空间管理

  • 嵌套文件夹组织请求
  • 环境变量(dev/staging/prod)
  • 文件系统镜像(支持 Git 版本控制)
  • Dropbox 同步支持

🎨 扩展与定制

  • 模板标签(UUID、时间戳等动态值)
  • 内置主题 + 自定义主题
  • 插件系统(认证、模板标签、UI 扩展)
  • JSONPath / XPath 响应过滤

技术栈

技术用途
Tauri跨平台桌面应用框架
Rust后端核心逻辑
React前端用户界面
TypeScript类型安全的 JavaScript

安装指南

下载安装

Yaak 提供多种安装方式:

macOS

bash
brew install --cask yaak

Linux (Flatpak)

bash
flatpak install flathub app.yaak.yaak

WindowsGitHub Releases 下载 .msi 安装包

从源码构建

bash
# 克隆仓库
git clone https://github.com/mountain-loop/yaak.git
cd yaak

# 安装依赖
npm install

# 启动开发服务器
npm run tauri dev

# 构建生产版本
npm run tauri build

快速开始

1. 创建工作空间

打开 Yaak 后,点击左侧边栏的 "+" 按钮创建新工作空间。

2. 配置环境变量

在工作空间设置中定义环境变量:

text
BASE_URL: https://api.example.com
API_KEY: your-secret-key

3. 发送第一个请求

http
GET {{BASE_URL}}/users
Authorization: Bearer {{API_KEY}}

4. 使用模板标签

http
POST {{BASE_URL}}/users
Content-Type: application/json

{
  "id": "{% uuid %}",
  "name": "John Doe",
  "createdAt": "{% timestamp %}"
}

使用示例

REST API 测试

http
# 获取用户信息
GET https://jsonplaceholder.typicode.com/users/1

# 创建新帖子
POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "foo",
  "body": "bar",
  "userId": 1
}

GraphQL 查询

graphql
query GetUser($id: ID!) {
  user(id: $id) {
    name
    email
    posts {
      title
    }
  }
}

变量:

json
{
  "id": "1"
}

WebSocket 连接

javascript
// 连接到 WebSocket 服务器
wss://echo.websocket.org

// 发送消息
{
  "message": "Hello, WebSocket!"
}

与竞品对比

特性YaakPostmanInsomniaBruno
开源
离线优先
无遥测
轻量级
多协议部分

相关资源

许可证

Yaak 采用 MIT 许可证开源,你可以自由使用、修改和分发。

分享: