HTTPie - 现代化命令行HTTP客户端工具
命令简介
HTTPie(发音为"aitch-tee-tee-pie")是一款面向21世纪的开源命令行HTTP客户端,专为API调试和Web服务交互设计。相比传统工具如cURL,它通过自然语言式命令结构和智能化响应处理,显著提升了HTTP请求的效率和可读性。其核心优势在于直观的语法设计、自动化的JSON支持以及彩色终端输出,已成为开发者、测试工程师和API工作者的首选工具。
核心特性
- 人性化语法 采用
METHOD URL [ITEM...]的类自然语言结构,例如http PUT api.example.com name=John age:=29即可完成JSON请求,无需记忆复杂参数。 - 智能输出处理 自动美化JSON/XML响应并添加语法高亮,支持通过
--headers查看原始HTTP头,通过--verbose显示完整请求过程。 - 多协议支持 完整覆盖HTTP/1.1、HTTP/2及HTTPS,内置SSL证书管理和代理支持(如
--proxy=http://localhost:8080)。 - 数据交互模式
- JSON模式(默认):自动序列化字段,支持非字符串类型(如
age:=29) - 表单模式(
-f):http -f POST form.example.com user=admin - 文件上传:
http example.com/upload file@/path/to/img.jpg
- JSON模式(默认):自动序列化字段,支持非字符串类型(如
安装方法
| 系统平台 | 安装命令 |
|---|---|
| macOS | brew install httpie |
| Debian/Ubuntu | sudo apt install httpie |
| CentOS/RHEL | sudo yum install httpie |
| Windows | choco install httpie 或 pip install httpie |
| 通用方案 | pip install --upgrade httpie(需Python 3.7+) |
使用教程
请求方法
bash
# GET请求(默认方法)
http example.org
# 显式指定方法
http POST example.org/users name=Alice age:=28 # :=表示数字类型
http DELETE example.org/users/123数据提交
bash
# JSON数据(默认)
http POST api.example.com key1="value" items:='["a","b"]'
# 表单提交
http -f POST example.com/login username=admin password=123
# 文件上传
http POST example.com/upload avatar@photo.jpg查询参数
bash
# URL参数(双等号)
http GET api.example.com/search q==httpie page==2
# 请求头(冒号分隔)
http example.org X-API-Key:12345 Accept:"application/json"会话管理
通过--session保存Cookie和认证信息:
bash
http --session=logged-in -a user:pass example.com/login
http --session=logged-in example.com/profile流量分析与代理
bash
# 通过代理调试流量
http --proxy=http:http://localhost:8080 https://example.com
# 限速下载(单位KB/s)
http --download --rate-limit=100 https://example.com/largefile输出控制
bash
# 仅显示响应头
http --headers GET example.org
# 下载文件
http --download https://example.com/file.zip
# 流式输出(大数据量)
http --stream api.example.com/events调试技巧
bash
# 显示完整通信过程
http --verbose POST example.org data=test
# 忽略SSL验证(测试环境)
http --verify=no https://test.example.com
# 状态码检查(脚本中使用)
http --check-status example.org/health注意事项
危险操作警示
- 使用
--verify=no跳过SSL验证时需注意中间人攻击风险 - 包含敏感数据的命令会保留在shell历史中,建议使用环境变量
- 使用
性能调优
- 大文件处理时建议启用
--compress减少传输量 - 超时设置通过
--timeout=300避免长时间阻塞
- 大文件处理时建议启用
与cURL对比
特性 cURL HTTPie 语法复杂度 需记忆 -H/--data自然语言式指令 JSON支持 需手动指定头信息 自动识别与格式化 输出可读性 原始数据 彩色高亮+智能缩进
