slumber:883⭐的终端 HTTP/REST 客户端

API 调试是后端开发和前后端联调中绕不开的环节。Postman 功能全面但启动慢,cURL 轻量但交互繁琐。今天要介绍的 slumber 是一个运行在终端里的 HTTP/REST 客户端,试图在两者之间找到一个平衡点。

项目概览

属性详情
GitHubLucasPickering/slumber
主页https://slumber.lucaspickering.me/
Stars883 ⭐
语言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 可以作为轻量级的测试工具:

  1. 配置文件与代码放在一起
  2. 定义各种测试用例(正常输入、边界值、错误情况)
  3. 终端内快速切换执行

场景二: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配置文件驱动,链式请求团队协作,版本控制
PostmanGUI功能全面,生态丰富复杂测试,非技术人员
InsomniaGUI开源,轻量个人开发者
HTTPieCLI简洁的语法一次性请求
curlCLI无处不在脚本,简单请求
BrunoGUI离线优先,Git 友好替代 Postman

局限与注意事项

  • 学习曲线 - 配置文件语法需要适应
  • 功能边界 - 不支持测试断言、自动化测试报告等高级功能
  • 图形界面 - 二进制响应(图片、PDF)无法直接预览

总结

slumber 的价值在于它把 API 调试工作流带回了开发者最熟悉的场所——终端。对于习惯命令行工具的开发者,它提供了一个比 cURL 更友好、比 Postman 更轻量的选择。883 个 star 对于一个相对小众的工具来说已经证明其实用性。

如果你正在寻找一个可以纳入版本控制、支持团队协作的 HTTP 客户端,slumber 值得一试。


参考链接