科技前沿 Skill推荐推荐开源工具Rust

xh:比 curl 更友好的 HTTP 客户端

📅 2026-07-12

用 Rust 实现的 HTTPie 替代品。目前 GitHub 7,921 stars,MIT 许可证,一个二进制文件就能跑。

为什么需要另一个 HTTP 客户端

curl 是终端里最通用的 HTTP 工具,但它的语法并不友好。发送一个 JSON POST 请求:

curl -X POST https://api.example.com/data \
  -H "Content-Type: application/json" \
  -H "x-api-key: secret" \
  -d '{"name":"白物集","type":"blog"}'

手动拼 JSON 字符串、写 Content-Type 头、处理转义——每次写这种命令都在重复做无用功。HTTPie 解决了这个问题,但 Python 实现的启动速度和依赖管理在高频使用时明显拖后腿。

xh 用 Rust 重新实现了 HTTPie 的核心设计,单二进制部署,启动速度接近瞬发。

核心亮点

1. 自然语言的请求语法

xh 的请求项语法和 HTTPie 兼容,把参数名和值直接用 = 连接:

xh POST api.example.com/data name=白物集 type=blog x-api-key:secret

不需要手动构造 JSON,不需要写 \ 换行,不需要操心 Content-Type。xh 自动推断请求格式——看到 key=value 就自动设为 JSON。

查询参数用 ==,自定义头用 :,文件上传用 @

# 查询参数
xh get api.example.com/search q==rust sort==stars

# 自定义头
xh get api.example.com/user Authorization:"Bearer token123"

# 文件上传
xh POST api.example.com/upload avatar@~/photo.jpg

2. 智能输出格式化

xh 对响应内容自动格式化+高亮。JSON 自动 indent 和着色,不需要额外 pipe 到 jq。

xh httpbin.org/json
# 输出直接显示格式化后的 JSON,带语法高亮

输出控制也灵活:-h 只看头,-b 只看体,-v 看完整请求+响应。

3. --curl 参数输出 curl 等价命令

一个实用小功能:xh 可以输出当前请求对应的 curl 命令。调试时在 xh 和 curl 之间切换非常方便。

xh --curl POST api.example.com/data name=test
# 输出等价的 curl 命令,方便粘贴到文档或 CI 脚本

4. 单二进制 + HTTP/2 支持

xh 编译成一个静态链接的二进制文件,没有运行时依赖。从 GitHub Releases 下载即可运行。支持 HTTP/2,这是 HTTPie 还没做到的。

白物集实战

白物集的内容管线每天在脚本里大量使用 curl 调用后端 API——POST 文章、GET 知识卡片、PATCH 修复内容。每次写 curl 命令都要处理 HTTP 头的拼写和 JSON 构造。

用 xh 替换后,API 调用变成:

# 发布文章(之前用 curl 需要 6 行)
xh POST ai.golfr20.cn/api/v1/content/ingest \
  x-api-key:*** \
  title="xh 使用指南" \
  content_md@/tmp/article.md \
  status=published

文件上传用 @ 语法,直接在命令行引用文件路径,不需要 -d @/tmp/payload.json。对于日常调试 API、快速验证接口响应、临时查数据库——xh 比 curl 快得多。

适合什么场景

  • API 调试:日常测试 REST API、验证接口返回
  • CI/CD 脚本:xh 的 --check-status 默认启用,非 2xx 自动非零退出,适合管道
  • 快速验证:不想打开 Postman 或 Insomnia 的时候
  • 文档示例:xh 命令可读性高,比 curl 更适合写在 README 或 Wiki 里

不适合什么场景

  • 已有 curl 脚本的长期维护项目:xh 不是 curl 的直接替代,迁移现有脚本有成本。用 --curl 参数逐条转换还可以接受。
  • 需要 HTTPie 插件系统的场景:xh 不支持插件。
  • Windows 非终端环境:Windows 上的 GUI 工具(Postman、Bruno)体验更好。

快速上手

步骤 1:安装

macOS 直接用 Homebrew:

brew install xh

Linux 用一键安装脚本:

curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh

步骤 2:发一个 GET 请求

xhs httpbin.org/json

xhs 是 xh 的 HTTPS 版本,默认使用 HTTPS 协议。

步骤 3:发一个 POST 请求

xh POST httpbin.org/post name=白物集 stars:=7921

:= 表示非字符串类型的 JSON 值(数字、布尔、数组)。

步骤 4:带认证的 API 调用

xh GET api.example.com/users Authorization:"Bearer eyJhbGci..."

步骤 5:把结果保存到文件

xh -d httpbin.org/json -o response.json

从安装到第一次成功调用,不超过 30 秒。

总结

xh 是 HTTPie 的 Rust 替代品,定位精准——解决高频 API 调用场景下的冗余操作。单二进制、HTTP/2、智能输出格式化,在日常开发中能省下大量重复劳动。如果你每天都要在终端和 API 打交道,xh 值得放进工具箱。

← 样式系统实战:白物集如何用 daisyUI 搭 UI → Apple 频道 后端是什么——从 Express API 讲起 →
🍎 Apple 深度分析
本文基于 Apple 公开资料及行业分析撰写。观点仅供参考与学习交流。