HTTPie 完全指南:比 curl 更人性化的 HTTP 调试工具

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 开发调试、自动化脚本、快速探测接口*
相关推荐
亚空间仓鼠4 小时前
OpenEuler系统常用服务(八)
linux·运维·服务器·网络
预立科技5 小时前
SSE、WebSocket 和 HTTP
websocket·网络协议·http·sse
Blurpath住宅代理5 小时前
跨境数据采集为何总“看错市场”?IP地理定位偏差的技术解析与应对策略
网络·静态ip·代理ip·住宅ip·静态代理
网络安全许木5 小时前
自学渗透测试的第十天(HTTP进阶与Burp Suite基础)
网络·网络协议·http·网络安全·渗透测试
亚空间仓鼠5 小时前
OpenEuler系统常用服务(九)
linux·运维·服务器·网络
肖爱Kun5 小时前
SRT协议封装MPEG-TS 流的视频和音频TS头结构
网络·音视频
.select.5 小时前
TCP 4(四次挥手)
服务器·网络·tcp/ip
汤愈韬5 小时前
网络安全之网络基础知识
服务器·网络协议·网络安全·security
AI精钢5 小时前
升级踩坑实录:OpenClaw 2026.4.9 后 GitHub Copilot 调用 Claude 全线 HTTP 400 的根因与修复
http·github·copilot·claude·github copilot·openclaw·ai 网关