你用 curl 调 API 的时候,有没有觉得每次都要记一堆参数很烦?-X -H -d -L,写完自己都看不懂了。
试试 xh。

xh 是什么
xh 是用 Rust 写的命令行 HTTP 客户端,GitHub 7.9k Stars,完全对标 HTTPie 的设计理念,但性能更好、启动更快、打包成单个二进制。
xh :8080/api/users
一条命令,彩色 JSON 返回,告别 curl 的参数地狱。
核心特色
| 特色 | 说明 |
|---|---|
| Rust 编写 | 启动速度比 Python 的 HTTPie 快几个量级 |
| 单二进制 | 无需运行时,一条命令装好,随身携带 |
| HTTP/2 支持 | 原生支持,不需要额外配置 |
| 默认 rustls | 不用操心系统 TLS 库版本,老系统也能跑新加密 |
--curl 翻译 |
一键把 xh 命令转成等价的 curl 命令,方便分享给同事 |
| 彩色输出 | JSON 语法高亮,响应体一目了然 |
| 默认检查 HTTP 状态码 | 4xx/5xx 自动报错,不用手动判断 |
xh vs curl vs HTTPie
# curl —— 参数记住了吗?
curl -X POST https://httpbin.org/post
-H "Content-Type: application/json"
-d '{"name":"Tom","age":26}'
# HTTPie —— 好多了,但启动慢(Python)
http POST httpbin.org/post name=Tom age:=26
# xh —— 又快又简洁
xh post httpbin.org/post name=Tom age:=26
xh 的语法设计很直觉:参数名=值 就是 body 字段,== 就是 URL 参数,: 就是 Header。不用记 -d -H -X 在哪。
基本语法
xh [OPTIONS] <[METHOD] URL> [REQUEST_ITEM]...
REQUEST_ITEM 语法:
| 语法 | 作用 |
|---|---|
name=value |
Body 字段(字符串) |
name:=26 |
Body 字段(强制 JSON 数字类型) |
id==5 |
URL Query 参数 |
content-type: |
添加 Header |
@file.txt |
读取文件内容作为值 |
请求示例
# GET 请求(最简单)
xh httpbin.org/json
# GET 带 Query 参数
xh get httpbin.org/json id==5 sort==true
# POST 带 JSON Body(自动序列化)
xh post httpbin.org/post name=Tom age:=26
# 自定义 Header
xh httpbin.org/get user-agent:MyApp/1.0 x-api-key:secret
# 从文件读取 Body
xh post :8080/api/bulk @data.json
# 下载文件
xh -d https://httpbin.org/json -o response.json
# 保持 Session(Cookie 持久化)
xh :8080/login --session=login.txt
小技巧:xhs 自动 HTTPS
把 xh 复制或链接为 xhs,自动走 HTTPS:
ln -s $(which xh) ~/.local/bin/xhs
xhs httpbin.org/get # → https://httpbin.org/get
GitHub 项目信息
- 仓库:ducaale/xh
- Stars:7.9k
- 语言:Rust 90.1%
- 协议:MIT
- 最新版本:0.24.x(持续活跃开发中)
总结
如果你经常在终端调 API,xh 真的值得一试。它继承了 HTTPie 的易用性,同时是 Rust 带来的极速体验。单二进制随身带,彩色输出赏心悦目,参数语法比 curl 舒服太多。
下一篇来说说 xh 如何安装——Linux 各发行版全覆盖。
评论