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 开发调试、自动化脚本、快速探测接口*
相关推荐
发光小北8 小时前
四路can转WIFI在现场应用中有什么问题?
网络协议
不像程序员的程序媛8 小时前
检测网络的命令mtr详解
网络
天启HTTP9 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_9 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
hz5678911 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
优橙教育11 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
AIgorithmGEEK12 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
长按助力退休14 小时前
HTTP缓存从强缓存到协商缓存,前端性能优化第一步
http
物联网软硬件开发-轨物科技15 小时前
【轨物洞见】什么是产品碳足迹(PCF)?ISO 14067 计算方法与应用场景深度解读
大数据·网络·人工智能