如果你曾经为 curl 的语法而苦恼——-X POST -H "Content-Type: application/json" -d '{"key":"value"}'——并认为一定有更好的方法,那么你并不孤单。

xh 是一个由 Rust 驱动的命令行 HTTP 客户端,它以远胜于 HTTPie 的性能,重新实现了 HTTPie 的直观设计。


什么是 xh?

xh 是一个友好、快速的 HTTP 请求发送工具。它用 Rust 编写(90% 的代码库),以单个静态二进制文件发布,并将 HTTPie 优雅的语法带到了 Rust 生态系统中。

Bash
xh httpbin.org/json

一条命令。彩色 JSON 输出。不再需要考古式地查阅参数。


主要特性

特性 详情
Rust 驱动 相比 Python 的 HTTPie,启动几乎瞬时
单个二进制文件 无需运行时,易于安装,方便移植
HTTP/2 支持 原生支持,无需额外标志
默认使用 rustls 不依赖系统 TLS——在较旧发行版上也能工作
--curl 标志 将任意 xh 命令转换为等效的 curl 命令
彩色输出 语法高亮的 JSON、headers 等
自动状态检查 除非另行指定,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 的请求项语法极其简单:name=value 设置 body 字段,== 添加 URL 参数,: 设置 header。无需记忆 -d-H-X


基本语法

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

请求项语法:

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

xh JSON 彩色输出

请求示例

Bash
# 简单 GET
xh httpbin.org/json

# 带查询参数的 GET
xh get httpbin.org/json id==5 sort==true

# 带 JSON body 的 POST(自动序列化)
xh post httpbin.org/post name=Tom age:=26

# 自定义 headers
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(积极维护中)

为什么选择 xh?

如果你经常在命令行中与 API 打交道,xh 值得一试。它将 HTTPie 符合人体工程学的语法带到了 Rust 世界——快速启动、单个二进制文件、彩色输出和合理的默认值。它就像你一直希望的那个体感更流畅的 HTTPie。

下一篇:在 Linux 上安装 xh →

最后修改: 2026年7月6日

作者

评论

发表评论

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