HTTPie: 开发者友好的http客户端工具
📌 一、HTTPie 简介
HTTPie 是一个以开发者体验为核心的 命令行 HTTP 客户端工具,目标是替代 curl 等传统工具,简洁优雅地发送 HTTP 请求并读取响应,尤其适用于调试、测试和日常开发中的 RESTful API 操作。
项目主页:HTTPie – API testing client that flows with you
GitHub:https://github.com/httpie/httpie
🧩 二、核心特性
功能类别 | HTTPie 特性说明 |
---|---|
✅ 语法简洁 | 类似自然语言:如 http GET example.com |
✅ 支持 JSON | 自动加 header 和序列化/反序列化 JSON |
✅ 输出美观 | 支持高亮输出和格式化,适合阅读 |
✅ 表单/上传 | 支持 multipart、文件上传 |
✅ 认证方便 | 支持 Basic、Bearer、Digest 等 |
✅ 支持 Session | Cookie 自动保存和重用 |
✅ 跨平台工具 | CLI + Web UI + API Explorer |
✅ 插件系统 | 如 AWS 签名、OAuth 等插件可扩展使用 |
✅ Python 库 | 可集成到 Python 脚本中使用 |
🔍 三、基本命令对比示例
🎯 1. GET 请求
> http GET https://httpbin.org/get
等价于 curl:
> curl https://httpbin.org/get
🎯 2. POST JSON
> http POST https://httpbin.org/post name=jin age:=30
等价于 curl:
> curl -X POST https://httpbin.org/post \ -H "Content-Type: application/json" \ -d '{"name":"jin", "age":30}'
🎯 3. 添加 Header
> http GET https://api.example.com Authorization:"Bearer <token>"
🎯 4. 上传文件
> http --form POST https://httpbin.org/post file@./a.txt
🚀 四、HTTPie 最佳实践
✅ 1. 常用参数
参数 | 含义 |
---|---|
-v | 显示请求和响应的详细内容(verbose) |
--json | 强制将数据编码为 JSON |
--form | 提交表单数据(application/x-www-form-urlencoded ) |
--download | 自动保存响应为文件 |
--session | 支持 session 机制(自动保存 cookie) |
✅ 2. API 开发调试场景
# 登录并保存会话
http --session=login POST https://example.com/api/login username=admin password=123456
# 使用 session 调用受保护接口
http --session=login GET https://example.com/api/user/profile
✅ 3. 与 jq
结合做响应处理
http GET https://httpbin.org/json | jq '.slideshow.slides[] | .title'
✅ 4. 编写 API 请求脚本(.http 文件)
内容示例(命名为 test.http
):
GET https://httpbin.org/get POST https://httpbin.org/post Content-Type: application/json { "user": "mr.jin", "age": 35 }
运行:
httpie run test.http
⚔️ 五、与 curl、wget 对比
功能项 | HTTPie | curl | wget |
---|---|---|---|
🎯 使用定位 | REST API 调试 | 通用 HTTP 客户端 | 文件/站点下载 |
✅ 请求语法 | 自然语言式 | 标准命令行参数 | 简单 URI |
✅ JSON 支持 | 自动处理 | 需手动加 headers | 不支持 |
✅ 彩色输出 | 默认支持 | 需结合 jq | 无输出格式 |
✅ 文件下载 | 支持 --download | -O / -o | 默认用途 |
✅ Cookie 管理 | --session 自动处理 | 需 -b / -c | 支持 cookie |
✅ 文件上传 | file@path | -F 表单上传 | 不支持 |
✅ 插件机制 | 支持(OAuth/AWS) | 无插件 | 无插件 |
✅ 认证支持 | Basic, Bearer, OAuth 等 | 非常全面 | 较弱 |
✅ 文档友好性 | ✅(文档清晰) | ❌(命令复杂) | ❌ |
✅ 可脚本化 | ❌(适合手工) | ✅ | ✅ |
✅ 使用体验 | 高(面向开发者) | 中(需习惯命令) | 低(命令简单) |
🧭 六、场景选型建议
使用场景 | 推荐工具 | 说明 |
---|---|---|
快速调试 REST API | ✅ HTTPie | 易读、输出美观 |
自动化脚本 | ✅ curl | 稳定、兼容性好 |
文件/镜像站下载 | ✅ wget | 断点续传、递归 |
学习/教学演示 | ✅ HTTPie | 输出清晰,展示效果好 |
安全认证/签名集成 | ✅ curl / HTTPie 插件 | AWS、OAuth、Digest 支持良好 |
🛠 七、安装方法
使用 pip 安装(推荐)
pip install --upgrade httpie
使用 Homebrew 安装(macOS)
brew install httpie
📎 八、总结
HTTPie = 更易读的 curl + 为现代 API 设计的交互体验,适合日常调试、API 开发和接口联调场景,是开发者最友好的 CLI HTTP 工具。