HTTPie 完全指南:比 curl 更人性化的 HTTP 调试工具
如果你厌倦了 curl 的冗长语法,HTTPie 是一个值得尝试的替代方案。
一、HTTPie 是什么
HTTPie (发音:aitch-tee-tee-pie )是一个命令行 HTTP 客户端,目标是让与 Web 服务的 CLI 交互尽可能人性化。
它专为测试、调试和与 API / HTTP 服务器交互而设计,相比 curl,核心优势在于:
| 维度 | curl | HTTPie |
|---|---|---|
| 语法直观性 | 需要记忆大量 flag | 类似英语句子 |
| JSON 支持 | 需手动处理 | 自动序列化/美化 |
| 输出格式 | 原始文本 | 彩色高亮 + 格式化 |
| 会话管理 | 需手动维护 cookie | 内置会话功能 |
| 下载功能 | 需组合多个参数 | 类似 wget 一键下载 |
当前版本 :3.2.4
官网:https://httpie.io/
二、安装
bash
# macOS
brew install httpie
# Linux (Debian/Ubuntu)
apt install httpie
# Windows
choco install httpie
# Python 环境(通用)
python -m pip install --upgrade httpie
安装完成后验证:
bash
http --version
# HTTPie 3.2.4
三、基础语法
bash
http [选项] [方法] URL [请求项...]
最简形式(自动根据数据选择 GET 或 POST):
bash
http pie.dev/get
http pie.dev/post name=John
四、GET 请求
4.1 最简单的 GET
bash
http GET https://httpbin.org/get
或简写(省略 GET):
bash
http https://httpbin.org/get
4.2 带查询参数
bash
# 方法1:URL 中直接带参数
http https://httpbin.org/get?page=1&size=10
# 方法2:HTTPie 原生语法(推荐)
http GET https://httpbin.org/get page==1 size==10
注意:
==用于查询参数,=用于请求体字段。
五、POST 请求
5.1 发送 JSON 数据(默认)
bash
http POST https://httpbin.org/post name=张三 email=zhangsan@example.com
HTTPie 自动设置:
Content-Type: application/json- 自动序列化 JSON
5.2 强制指定数据类型
bash
# 表单(application/x-www-form-urlencoded)
http --form POST url field=value
# multipart(文件上传时自动使用)
http -f POST url avatar@~/photo.jpg
5.3 混合使用不同类型
bash
http POST https://httpbin.org/post \
name=张三 \
age:=29 \
active:=true
注意:
:=用于发送非字符串类型(数字、布尔值)
六、自定义请求头
bash
# 单个请求头
http GET https://example.com/api User-Agent:MyBot/1.0
# 多个请求头
http GET https://example.com/api \
Authorization:Bearer your_token_here \
X-Request-ID:abc123 \
Accept:application/json
七、认证
7.1 Basic 认证
bash
http -a username:password https://httpbin.org/basic-auth/user/pass
7.2 Bearer Token
bash
http GET https://api.example.com/data \
Authorization:Bearer your_jwt_token_here
7.3 Digest 认证
bash
http --auth-type=digest -a user:pass https://example.com/protected
八、输出控制
| 选项 | 说明 | 适用场景 |
|---|---|---|
-v, --verbose |
显示完整 HTTP 交换 | 调试请求全貌 |
-h, --headers |
仅显示响应头 | 检查缓存、Cookie |
-b, --body |
仅显示响应体 | 只关心数据 |
-m, --meta |
仅显示元数据 | 看耗时、大小 |
--print=HhBb |
自定义显示哪些部分 | 精细控制 |
8.1 仅看响应头
bash
http -h https://www.baidu.com
8.2 完整调试模式
bash
http -v https://httpbin.org/get
8.3 自定义输出格式
bash
# 只显示响应头和响应体
http --print=hB https://httpbin.org/get
# 只显示元数据(状态码、耗时、大小)
http --meta https://httpbin.org/get
九、会话管理
HTTPie 的会话功能是其相比 curl 的一大优势,可以自动维护 Cookie 和认证信息。
9.1 创建会话
bash
# 创建名为 api 的会话(首次需要认证)
http --session=user1 --auth user:pass https://httpbin.org/get
9.2 复用会话
bash
# 自动使用之前保存的认证和 Cookie
http --session=user1 https://httpbin.org/get
十、文件下载
10.1 基本下载
bash
http --download https://example.com/file.zip
10.2 指定文件名
bash
http --download -o output.zip https://example.com/file.zip
十一、高级用法
11.1 离线构建请求(不发送)
bash
# 只构建和查看请求,不实际发送
http --offline POST https://example.com/api name=test
11.2 跟随重定向
bash
http --follow https://short.url/abc
11.3 跳过 SSL 证书验证
bash
http --verify=no https://self-signed.example.com
11.4 超时设置
bash
http --timeout=30 https://slow-api.example.com
11.5 检查状态码(脚本用)
bash
http --check-status https://httpbin.org/status/200
成功时返回 0,4xx 返回 1,5xx 返回 2。
十二、配置文件
bash
# 配置文件位置
~/.config/httpie/config.json
示例配置:
json
{
"default_options": [
"--style=fruity",
"--timeout=10",
"--pretty=format"
]
}
十三、与 curl 对比速查
| 操作 | curl | HTTPie |
|---|---|---|
| GET 请求 | curl https://url |
http url |
| POST JSON | curl -X POST -d '{"k":"v"}' -H "Content-Type: application/json" url |
http POST url k=v |
| 设置请求头 | curl -H "Header: value" url |
http url Header:value |
| Basic 认证 | curl -u user:pass url |
http -a user:pass url |
| 查看响应头 | curl -I url |
http -h url |
| 下载文件 | curl -o file url |
http -d url |
| 查看完整交换 | curl -v url |
http -v url |
| 跳过 SSL 验证 | curl -k url |
http --verify=no url |
| 跟随重定向 | curl -L url |
http -F url |
十四、常见错误排查
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 提示无权限 | 认证信息错误 | 检查 -a 参数是否正确 |
| 请求超时 | 网络慢或服务响应慢 | 增加 --timeout 值 |
| SSL 证书错误 | 自签名证书 | 使用 --verify=no |
| stdin 卡住 | 管道输入被等待 | 加 --ignore-stdin |
| 响应乱码 | 编码问题 | 加 --headers 确认 Content-Type |
总结
HTTPie 是一个让 HTTP 调试变得简单的工具:
- 语法直观:写出来就像说英语
- 输出友好:彩色高亮、格式化 JSON
- 功能完整:认证、会话、下载、代理全都支持
- 适合场景:API 开发调试、自动化脚本、快速探测接口*