Skip to content

HTTPie - 现代化命令行HTTP客户端工具

官网:https://httpie.io/

命令简介

HTTPie(发音为"aitch-tee-tee-pie")是一款面向21世纪的开源命令行HTTP客户端,专为API调试和Web服务交互设计。相比传统工具如cURL,它通过自然语言式命令结构和智能化响应处理,显著提升了HTTP请求的效率和可读性。其核心优势在于直观的语法设计、自动化的JSON支持以及彩色终端输出,已成为开发者、测试工程师和API工作者的首选工具。

核心特性

  1. 人性化语法 采用METHOD URL [ITEM...]的类自然语言结构,例如http PUT api.example.com name=John age:=29即可完成JSON请求,无需记忆复杂参数。
  2. 智能输出处理 自动美化JSON/XML响应并添加语法高亮,支持通过--headers查看原始HTTP头,通过--verbose显示完整请求过程。
  3. 多协议支持 完整覆盖HTTP/1.1、HTTP/2及HTTPS,内置SSL证书管理和代理支持(如--proxy=http://localhost:8080)。
  4. 数据交互模式
    • JSON模式(默认):自动序列化字段,支持非字符串类型(如age:=29
    • 表单模式(-f):http -f POST form.example.com user=admin
    • 文件上传:http example.com/upload file@/path/to/img.jpg

安装方法

系统平台安装命令
macOSbrew install httpie
Debian/Ubuntusudo apt install httpie
CentOS/RHELsudo yum install httpie
Windowschoco install httpiepip 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

注意事项

  1. 危险操作警示

    • 使用--verify=no跳过SSL验证时需注意中间人攻击风险
    • 包含敏感数据的命令会保留在shell历史中,建议使用环境变量
  2. 性能调优

    • 大文件处理时建议启用--compress减少传输量
    • 超时设置通过--timeout=300避免长时间阻塞
  3. 与cURL对比

    特性cURLHTTPie
    语法复杂度需记忆-H/--data自然语言式指令
    JSON支持需手动指定头信息自动识别与格式化
    输出可读性原始数据彩色高亮+智能缩进