Yaak API 客户端:五种协议、一个界面完成 API 测试
【免费下载链接】yaakThe most intuitive desktop API client. Organize and execute REST, GraphQL, WebSockets, Server Sent Events, and gRPC 🦬项目地址: https://gitcode.com/GitHub_Trending/ya/yaak
Yaak 是一个桌面 API 客户端,一个窗口覆盖 REST、GraphQL、WebSocket、SSE 和 gRPC 五种协议。它把接口请求收进本地工作区,用环境变量和插件统一管理凭证,让你不必为每种协议各换一个工具。
从源码构建并跑通第一个请求
Yaak 是 Node.js 加 Rust 的 monorepo,构建走 Tauri。最低要求是 Node.js 24+、Rust,以及 Vite+ 提供的vp命令。用node -v、rustc --version、vp --version各自确认一次。
从源码启动只需要三步:
git clone https://gitcode.com/GitHub_Trending/ya/yaak cd yaak npm install && npm run bootstrap npm startbootstrap会装依赖、构建各 workspace 并 vendor 好 Node 与 protoc 侧车,首次跑会慢一些。应用打开后你会落在工作区视图,左侧是请求树,底部能看到Import和New Request两个按钮。点New Request建一个请求,在地址栏填https://httpbin.org/get,按发送,右侧就会返回 200 和一段 JSON。到这里,你已经完成了从安装到拿到响应的最短路径。
用它实际能做什么
发送 REST 请求并过滤响应
REST 是默认形态。GET、POST、PUT、DELETE都能用,请求头、查询参数、Body 分别有独立编辑区,JSON Body 带语法高亮。响应面板支持按格式查看,还能直接对返回内容做过滤。
装好 JSONPath 过滤插件后,响应底部会出现一个过滤输入框,输入$..name这类表达式,视图立即只显示命中的字段,不用在长响应里滚动找数据。
测试 GraphQL 查询
选 GraphQL 类型的请求后,编辑区切成查询编辑器,写 query 和变量,发送后看返回的 data 与 errors。schema 可以从文件加载,编辑器据此做补全和校验,变量与请求体分开维护,便于复用同一操作。
维护 WebSocket 与 SSE 长连接
长连接和一次性请求的区别在于:它不"结束"。选 WebSocket 或 SSE 类型后,面板进入事件流视图,你会持续看到进出的消息,而不是单次响应。你可以手动发帧、按状态跟踪连接是否存活,SSE 这边则实时显示事件流。适合验证推送、排查丢帧,连接状态一眼可见。
用认证插件和环境变量管好凭证
凭证不该硬编码进请求。Yaak 把认证做成可挂接的插件:Basic、Bearer、JWT、API Key,以及完整的 OAuth 2.0 流程(授权码、客户端凭证、PKCE、token 自动刷新),都在plugins/auth-*下各占一个目录。以 Bearer 为例,请求标签页里会出现Bearer选项卡,勾选启用后填 Token 即可。
环境之间靠变量切换。在开发、预发、生产各建一个环境,把baseUrl、apiKey存进去,请求里用{{baseUrl}}引用,切环境即切域名和密钥。动态值用模板函数生成,比如{{uuid.v4()}}插入一个随机 UUID,或 timestamp 函数拿当前时间戳。变量解析逻辑在 apps/yaak-client/hooks/useEnvironmentVariables.ts,作用域和优先级出问题时看它。
导入 Postman 集合并复制为 curl
老项目不用重敲。Import按钮走的是导入器插件:Postman 集合、Postman 环境、Insomnia、OpenAPI/Swagger、Curl 命令都能进,分别对应plugins/importer-postman、importer-openapi、importer-curl等目录,导入后保留原有目录结构。
反向也一样。对任意请求右键选Copy as Curl,得到一条可直接在终端跑的命令,方便交给同事或塞进脚本:
curl -X POST https://api.example.com/users \ -H "Content-Type: application/json" \ -d '{"name": "Ada"}'进阶:gRPC、Git 同步与主题定制
调用 gRPC 服务
是什么:完整的 gRPC 客户端,支持导入.proto、四种流式模式(unary、server/client/bidirectional streaming)和反射发现服务。在哪:Rust 侧实现在 crates/yaak-grpc/,含反射与传输模块。什么时候用:团队接口是 gRPC 而非 HTTP 时。建一个 gRPC 类型请求,填localhost:50051这类地址,导入 proto 后选服务与方法,右键还能Copy as gRPCUrl导出。
把工作区同步到 Git 目录
是什么:把工作区数据镜像成文件系统里的目录,交给 Git 版本控制或 Dropbox 同步,实现团队协作。在哪:前端在 apps/yaak-client/init/sync.ts,Rust 侧在 crates/yaak-sync/;工作区左下角的Setup FS Sync or Git就是入口。什么时候用:多人共用一套请求、需要提交历史或回滚时。设置同步目录后,你在工作区里的增删改会落到文件,反向的文件变更也会拉回界面。
换一套主题
是什么:内置多套主题,支持明暗模式,也能自建。在哪:plugins/themes-yaak/ 下每个目录一个主题,设置里可切换。什么时候用:长时间看响应想换配色时,或想统一团队视觉风格时。
卡住了?按这里自查
插件没生效:确认插件已安装且版本兼容,插件跑在 packages/plugin-runtime/ 这个 Node 侧车里,加载失败多与插件声明不匹配有关,先看这里再怀疑请求本身。
环境变量没被替换:多半是作用域或优先级没对上。请求、文件夹、工作区都能挂变量,内层覆盖外层;解析规则在 apps/yaak-client/hooks/useEnvironmentVariables.ts,按这个顺序排查哪个变量把你要的值盖掉了。
同步不到 Git 目录:先确认工作区确实设了syncDir,没设的话同步逻辑会直接跳过。同步实现与防抖在 crates/yaak-sync/ 和 apps/yaak-client/init/sync.ts,再检查目标目录的 Git 权限与文件状态。
Yaak 的大部分能力都来自插件:认证、导入、模板函数、过滤、主题各占一个plugins/下的目录,想加新能力就从 plugins/ 里找一个现有实现照着写。项目对社区 PR 目前只开放 bug 修复,非修复类改动需先在反馈渠道拿到许可,具体流程见仓库里的贡献说明。
【免费下载链接】yaakThe most intuitive desktop API client. Organize and execute REST, GraphQL, WebSockets, Server Sent Events, and gRPC 🦬项目地址: https://gitcode.com/GitHub_Trending/ya/yaak
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考