slumber:883⭐的终端 HTTP/REST 客户端
slumber:883⭐的终端 HTTP/REST 客户端
API 调试是后端开发和前后端联调中绕不开的环节。Postman 功能全面但启动慢,cURL 轻量但交互繁琐。今天要介绍的 slumber 是一个运行在终端里的 HTTP/REST 客户端,试图在两者之间找到一个平衡点。
项目概览
| 属性 | 详情 |
|---|---|
| GitHub | LucasPickering/slumber |
| 主页 | https://slumber.lucaspickering.me/ |
| Stars | 883 ⭐ |
| 语言 | Rust |
| 许可证 | MIT |
| 创建时间 | 2023 年 8 月 |
核心特性
slumber 的定位很明确:让你在终端里完成大部分 API 调试工作,而不需要切换到图形界面。
请求集合管理
通过 YAML 配置文件定义请求集合,支持:
profiles:
local:
data:
host: http://localhost:3000
production:
data:
host: https://api.example.com
requests:
get_user:
method: GET
url: "{{host}}/users/{{user_id}}"
create_user:
method: POST
url: "{{host}}/users"
body:
type: json
data:
name: "test"
email: "test@example.com"
配置文件可以提交到版本控制,团队协作时共享 API 定义。
链式请求与变量
支持从响应中提取数据,用于后续请求:
requests:
login:
method: POST
url: "{{host}}/auth/login"
body:
type: json
data:
username: admin
password: secret
get_profile:
method: GET
url: "{{host}}/profile"
headers:
Authorization: "Bearer {{login.token}}"
这种链式设计让复杂的 API 调用流程变得清晰可读。
终端原生体验
基于 Ratatui 构建的界面充分利用终端特性:
- 键盘导航 - Vim 风格的快捷键,
j/k移动,/搜索 - 分页浏览 - 请求列表、响应详情、历史记录分栏显示
- 语法高亮 - JSON 响应自动格式化并着色
- 复制集成 - 响应内容一键复制到剪贴板
安装方式
预编译二进制
# macOS/Linux (Homebrew)
brew install slumber
# Cargo
cargo install slumber
# 从 GitHub Release 下载
curl -LO https://github.com/LucasPickering/slumber/releases/latest/download/slumber-x86_64-unknown-linux-gnu.tar.gz
配置启动
# 创建配置文件
cat > slumber.yml << 'EOF'
profiles:
default:
data:
host: https://httpbin.org
requests:
get:
method: GET
url: "{{host}}/get"
post:
method: POST
url: "{{host}}/post"
body:
type: json
data:
key: value
EOF
# 启动 TUI
slumber
使用场景
场景一:本地开发调试
开发 REST API 时,slumber 可以作为轻量级的测试工具:
- 配置文件与代码放在一起
- 定义各种测试用例(正常输入、边界值、错误情况)
- 终端内快速切换执行
场景二:CI/CD 集成
slumber 支持非交互模式,可用于自动化测试:
# 运行所有请求并退出
slumber --no-tui
# 指定 profile
slumber -p production --no-tui
场景三:团队协作
相比 Postman 的云端共享,slumber 的配置文件可以直接提交到 Git:
git add slumber.yml
git commit -m "Add API test definitions"
团队成员克隆后立即可用,无需额外配置。
技术架构
┌─────────────────────────────────────────┐
│ TUI 界面 (Ratatui) │
│ ┌──────────┬──────────┬──────────────┐ │
│ │ 请求列表 │ 请求详情 │ 响应预览 │ │
│ └──────────┴──────────┴──────────────┘ │
└──────────────────┬──────────────────────┘
│ HTTP 请求
▼
┌─────────────────────────────────────────┐
│ HTTP 客户端 (reqwest) │
└─────────────────────────────────────────┘
核心技术栈:
- Ratatui - 终端 UI 框架
- reqwest - HTTP 客户端
- serde - 序列化/反序列化
- tokio - 异步运行时
同类对比
| 工具 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| slumber | 终端 TUI | 配置文件驱动,链式请求 | 团队协作,版本控制 |
| Postman | GUI | 功能全面,生态丰富 | 复杂测试,非技术人员 |
| Insomnia | GUI | 开源,轻量 | 个人开发者 |
| HTTPie | CLI | 简洁的语法 | 一次性请求 |
| curl | CLI | 无处不在 | 脚本,简单请求 |
| Bruno | GUI | 离线优先,Git 友好 | 替代 Postman |
局限与注意事项
- 学习曲线 - 配置文件语法需要适应
- 功能边界 - 不支持测试断言、自动化测试报告等高级功能
- 图形界面 - 二进制响应(图片、PDF)无法直接预览
总结
slumber 的价值在于它把 API 调试工作流带回了开发者最熟悉的场所——终端。对于习惯命令行工具的开发者,它提供了一个比 cURL 更友好、比 Postman 更轻量的选择。883 个 star 对于一个相对小众的工具来说已经证明其实用性。
如果你正在寻找一个可以纳入版本控制、支持团队协作的 HTTP 客户端,slumber 值得一试。
参考链接