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

试试 xh


xh vs curl vs HTTPie comparison

xh 是什么

xh 是用 Rust 写的命令行 HTTP 客户端,GitHub 7.9k Stars,完全对标 HTTPie 的设计理念,但性能更好、启动更快、打包成单个二进制。

Bash
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

Bash
# 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 在哪。


基本语法

Bash
xh [OPTIONS] <[METHOD] URL> [REQUEST_ITEM]...

REQUEST_ITEM 语法:

语法 作用
name=value Body 字段(字符串)
name:=26 Body 字段(强制 JSON 数字类型)
id==5 URL Query 参数
content-type: 添加 Header
@file.txt 读取文件内容作为值

请求示例

Bash
# 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:

Bash
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 各发行版全覆盖。

最后修改: 2026年7月6日

作者

评论

发表评论

您的邮箱地址不会被公开。