HTTPie 3.2.4 配置参数详解

把 HTTPie 3.2.4 的全部用户级配置一次讲透:config.json 全局默认选项、环境变量、会话文件结构与插件体系,附交互与脚本两套可直接抄写的生产配置模板。

HTTPieHTTPieCLIAPI2026/10/25

HTTPie 3.2.4 配置参数详解

目标:把 HTTPie 3.2.4 的全部用户级配置一次讲透——config.json 全局默认选项、环境变量、会话文件结构与插件体系,并给出交互与脚本两套可直接抄写的生产配置模板。所有键值行为、报错与回显均在 Ubuntu 24.04.5 LTS + HTTPie 3.2.4 实测照抄。

一、环境信息

  • 操作系统:Ubuntu 24.04.5 LTS(Noble Numbat),x86_64,内核 7.0.0-38-generic
  • HTTPie:3.2.4(pipx 安装,~/.local/bin/http;安装过程见《Ubuntu 24.04 安装 HTTPie 3.2.4 指南》)
  • 运行时底座(http --debug 实测):Requests 2.34.2、Pygments 2.21.0、Python 3.12.3
  • 配置目录:~/.config/httpie/(Linux;下文给出三大系统对照)
  • 测试端点:httpbin.org(公开 HTTP 测试服务,直连可达)

二、前置条件

http --version

实测回显:

3.2.4
# 确认配置目录初始状态(首次使用前可为空)
ls -la ~/.config/httpie/ 2>/dev/null || echo "配置目录尚未创建"

实测回显:

配置目录尚未创建

💡 说明:HTTPie 的配置目录与会话、插件登记均按需自动生成;本文为了让读者能对照,先手工创建目录并写入最小 config.json。

mkdir -p ~/.config/httpie
echo '{}' > ~/.config/httpie/config.json

三、参数查看与修改方式

HTTPie 的"配置参数"分四层,修改入口各不相同(本节先给全景,四~七章逐层展开):

层级查看方式修改方式作用范围
CLI 选项http --help(全量 407 行)每次命令行传入单次请求
config.json 全局默认cat ~/.config/httpie/config.json直接编辑 JSON 文件该用户所有请求
环境变量env(过滤含 HTTPie/http_proxy 的项)shell 导出进程及其子进程
插件httpie plugins listhttpie plugins install/uninstall装卸后全局生效
# CLI 选项全量清单(--help 输出 407 行,此处节选高频项)
http --help | grep -E "^\s+--(style|pretty|print|timeout|check-status|ignore-stdin|follow|verify|proxy|session|auth-type|download|output|raw|offline|stream)"

实测回显(输出节选):

  --raw RAW
  --pretty {all,colors,format,none}
  --style STYLE, -s STYLE
  --response-charset ENCODING
  --print WHAT, -p WHAT
  --all
  --stream, -S
  --output FILE, -o FILE
  --download, -d
  --session SESSION_NAME_OR_PATH
  --session-read-only SESSION_NAME_OR_PATH
  --auth-type {basic,bearer,digest}, -A {basic,bearer,digest}
  --offline
  --proxy PROTOCOL:PROXY_URL
  --follow, -F
  --timeout SECONDS
  --check-status
  --verify VERIFY
  --ignore-stdin, -I

💡 说明:--auth-type 实测值域为 basic/bearer/digest 三种内置认证;更多类型(JWT、OAuth1 等)靠插件扩展,见第七章。

# 运行时环境底座与完整配置状态自检
http --debug --offline httpbin.org/get 2>&1 | head -6

实测回显:

HTTPie 3.2.4
Requests 2.34.2
Pygments 2.21.0
Python 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]
/root/.local/share/pipx/venvs/httpie/bin/python
Linux 7.0.0-38-generic

四、参数总览

4.1 CLI 选项按域分类总表

域选项默认值一句话说明
请求构造= : := == @ :请求头—请求项语法(详见《CLI 命令详解》篇)
请求构造--raw RAW无直接给原始请求体
请求构造--form, -f / --multipartJSON 默认表单编码 / 多部分编码
输出控制--print WHAT, -phb(终端)/ hb(重定向时 b)H 请求头 B 请求体 h 响应头 b 响应体 m 元信息
输出控制--pretty {all,colors,format,none}all(终端)管道/重定向时自动降为 none
输出控制--style, -sautoPygments 配色(monokai/emacs/…)
输出控制--response-charset自动检测强制响应解码字符集
输出控制--output, -o / --download, -dstdout落盘
行为--offline关只构造打印请求不发送
行为--stream, -S关流式响应即时输出
会话--session / --session-read-only关会话持久化
认证-a / --auth-type无 / basic凭据 / 认证类型
网络--proxy无按 PROTOCOL:PROXY_URL 配代理
网络--follow, -F / --max-redirects关 / 30跟随重定向
网络--timeout无(不超时)秒;0.001 可做瞬时超时测试
网络--verifyyesno 关闭 TLS 校验 / 传 CA 路径
脚本--ignore-stdin, -I关不读 stdin(脚本必加)
脚本--check-status关3xx/4xx/5xx → 退出码 3/4/5
重定向展示--all / --history-print关 / 随 --print显示中间请求/响应

4.2 config.json 支持的键

键类型实测行为
default_options字符串数组数组内每个元素作为隐式 CLI 选项拼接进每次请求(唯一高频键,4.3 实测)
implicit_content_type字符串2.x 遗留兼容键(stdin 默认类型),3.x 默认 JSON,无需设置
其他未知键—忽略不报错

⚠️ 注意:HTTPie 2.x 曾有 httpie config set 子命令管理配置,3.x 已移除——config.json 的唯一修改方式就是直接编辑文件,改完立即对下一条命令生效,无需重载。

4.3 default_options 生效机制实测

把常用选项写入 default_options,之后每条 http 命令自动携带:

cat > ~/.config/httpie/config.json <<'EOF'
{"default_options": ["--style=monokai", "--timeout=15"]}
EOF
cat ~/.config/httpie/config.json

实测回显:

{"default_options": ["--style=monokai", "--timeout=15"]}
# 生效验证:写一个非法 style,让配置解析层报错证明 config 被读取
echo '{"default_options": ["--style=no-such-style"]}' > ~/.config/httpie/config.json
http --ignore-stdin httpbin.org/get

实测回显(输出节选,报错证明 default_options 确实被注入命令行):

usage:
    http -s/--style {abap, algol, algol_nu, arduino, auto, autumn, borland, bw, 
coffee, colorful, default, dracula, emacs, friendly, friendly_grayscale, fruity,

💡 说明:报错同时是合法值清单——实测可用 style 共 30 余种(abap/algol/arduino/autumn/borland/bw/coffee/colorful/default/dracula/emacs/fruity/monokai/…),auto 为默认(按终端能力自动选)。这个"故意写错验证生效"的手法也适用于排查 config.json 是否被正确读取。

# 恢复干净配置
echo '{}' > ~/.config/httpie/config.json

五、核心参数分类详解

5.1 配置文件位置(跨平台对照)

Linux/macOS/Windows 的配置目录实测以官方文档为准,本机 Linux 实测路径如下:

系统配置目录
Linux~/.config/httpie/
macOS~/Library/Application Support/httpie/
Windows%APPDATA%\httpie\
环境变量覆盖HTTPIE_CONFIG_DIR 指向任意目录(优先级最高)

5.2 HTTPIE_CONFIG_DIR 环境变量(实测)

# 准备一个独立配置目录
mkdir -p /opt/data/quzuo/tmp/httpie/alt-config
echo '{"default_options":[]}' > /opt/data/quzuo/tmp/httpie/alt-config/config.json

# 正常 JSON:加载成功(无输出即正常)
HTTPIE_CONFIG_DIR=/opt/data/quzuo/tmp/httpie/alt-config http --ignore-stdin --offline httpbin.org/get
echo "exit=$?"

实测回显:

exit=0
# 写入非法 JSON:报 warning 并指明文件路径,证明读取的就是该目录
echo 'not-json' > /opt/data/quzuo/tmp/httpie/alt-config/config.json
HTTPIE_CONFIG_DIR=/opt/data/quzuo/tmp/httpie/alt-config http --ignore-stdin --offline httpbin.org/get

实测回显:

http: warning: invalid config file: Expecting value: line 1 column 1 (char 0) [/opt/data/quzuo/tmp/httpie/alt-config/config.json]
# 恢复
echo '{"default_options":[]}' > /opt/data/quzuo/tmp/httpie/alt-config/config.json

⚠️ 注意:非法 config.json 只是 warning 不阻断请求(降级为无默认选项继续执行),但 default_options 将全部失效——CI 里若依赖 --check-status 这类默认选项,配置文件损坏会静默改变行为,监控上要留意 stderr。

5.3 输出控制三件套:--print / --pretty / --style

# --print 取值字符:H=请求头 B=请求体 h=响应头 b=响应体 m=元信息;默认 hb
# 只看响应体与耗时元信息:
http --ignore-stdin --print=bm httpbin.org/get

实测回显:

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "HTTPie/3.2.4", 
    "X-Amzn-Trace-Id": "Root=1-6add7ad8-6e9bc9052b6160fb0700ba81"
  }, 
  "origin": "182.54.113.29", 
  "url": "https://httpbin.org/get"
}

Elapsed time: 0.459550006s
# -h / -b 是 --print=h / --print=b 的快捷方式
http --ignore-stdin -h httpbin.org/get

实测回显(输出节选):

HTTP/1.1 200 OK
Date: Sun, 25 Oct 2026 03:47:14 GMT
Content-Type: application/json
Content-Length: 296

💡 技术拓展:--pretty 与 --style 的分工——--pretty {all,colors,format,none} 控制"要不要着色/要不要格式化"两个开关位,--style 只控制"用什么配色"。--pretty=none 会同时关掉两者(管道友好,输出内容与 curl 相同的原始报文),--pretty=colors 保留原始格式只加色。终端直连时默认 all,检测到管道/重定向时自动降为 none,这也是"HTTPie 输出直接进 jq 会正常工作"的原因。

5.4 网络域:--proxy / --timeout / --verify

# --proxy 格式为 PROTOCOL:PROXY_URL,可按协议分别指定
# 实测:经内部代理访问 httpbin.org(--print=m 只看是否成功与耗时)
http --ignore-stdin --proxy=http:http://192.168.1.62:7897 --print=m httpbin.org/get

实测回显:

Elapsed time: 0.443759131s
# 代理不可达时的真实报错(实测:连接拒绝)
http --ignore-stdin --print=H --proxy=http:http://182.54.113.29:7897 httpbin.org/get

实测回显(输出节选):

http: error: ProxyError: HTTPConnectionPool(host='182.54.113.29', port=7897): Max retries exceeded with url: http://httpbin.org/get (Caused by ProxyError('Unable to connect to proxy', NewConnectionError("HTTPConnection(host='182.54.113.29', port=7897): Failed to establish a new connection: [Errno 111] Connection refused"))) while doing a GET request to URL: http://httpbin.org/get
# --timeout 单位秒,支持小数;对慢端点可实测瞬时超时
http --ignore-stdin --timeout=0.001 httpbin.org/delay/3
echo "exit=$?"

实测回显:

http: error: Request timed out (0.001s).

exit=2
# --verify:自签名/内网证书场景,先看默认校验下的真实报错
http --ignore-stdin https://self-signed.badssl.com/ -h

实测回显(输出节选):

http: error: SSLError: HTTPSConnectionPool(host='self-signed.badssl.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1000)'))) while doing a GET request to URL: https://self-signed.badssl.com/
# --verify=no 关闭校验后同一端点成功
http --ignore-stdin --verify=no https://self-signed.badssl.com/ -h

实测回显(输出节选):

HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Sun, 25 Oct 2026 03:59:53 GMT

💡 说明:--verify 还可传入私有 CA 文件路径(--verify=/path/to/ca.pem),是企业内网 HTTPS 调试的正道;--verify=no 仅限临时排查,长期关闭校验等于裸奔。

5.5 会话文件结构(实测逐键解析)

# 创建会话:认证信息随首次请求写入会话文件
http --ignore-stdin --session=docs-demo -a admin:q1w2e3r4 https://httpbin.org/basic-auth/admin/q1w2e3r4 > /dev/null

# 会话文件按"主机名"分目录存放
ls ~/.config/httpie/sessions/httpbin.org/

实测回显:

docs-demo.json
cat ~/.config/httpie/sessions/httpbin.org/docs-demo.json

实测回显:

{
    "__meta__": {
        "about": "HTTPie session file",
        "help": "https://httpie.io/docs#sessions",
        "httpie": "3.2.4"
    },
    "auth": {
        "raw_auth": "admin:q1w2e3r4",
        "type": "basic"
    },
    "cookies": [],
    "headers": []
}

逐键说明:

  • __meta__:会话文件格式标识与创建它的 HTTPie 版本,平台升级时用于兼容判断;
  • auth.raw_auth / auth.type:-a 传入的凭据原文与认证类型——明文存储,会话文件等同密码,生产环境权限应设 600 且不入版本库;
  • cookies:服务端 Set-Cookie 的累积(本例端点不种 Cookie,为空数组);
  • headers:你在会话请求里显式带的自定义头(如 X-Api-Token:abc123)会被持久化,后续同会话请求自动携带。
# 复用验证:第二条命令不带 -a,Authorization 头自动从会话注入
http --ignore-stdin --session=docs-demo --print=Hh https://httpbin.org/get

实测回显(输出节选):

GET /get HTTP/1.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Authorization: Basic YWRtaW46cTF3MmUzcjQ=
User-Agent: HTTPie/3.2.4
Host: httpbin.org

💡 说明:Authorization: Basic YWRtaW46cTF3MmUzcjQ= 即 admin:q1w2e3r4 的 Base64(echo -n 'admin:q1w2e3r4' | base64 可验证),证明认证从会话文件而非命令行注入。--session-read-only 变体适合"只读复用、不把新 Cookie 写回"的并发场景。

5.6 插件体系(实测全流程)

HTTPie 3.x 的插件管理统一收口在 httpie 管理命令下(裸 httpie plugins 会提示子动作):

httpie plugins

实测回显:

usage: httpie [-h] [--debug] [--traceback] [--version] {cli,plugins} ...
httpie: error: Please specify one of these: 'help', 'install', 'upgrade', 'uninstall', 'list'
# 安装一个真实认证插件(JWT)
httpie plugins install httpie-jwt-auth

实测回显(输出节选):

Using cached httpie_jwt_auth-0.4.0-py2.py3-none-any.whl (6.1 kB)
Installing collected packages: httpie-jwt-auth
Successfully installed httpie-jwt-auth-0.4.0
httpie plugins list

实测回显:

httpie-jwt-auth (0.4.0)
  httpie_jwt_auth (httpie.plugins.auth.v1)

💡 说明:list 第二行是插件注册的入口点元组——httpie.plugins.auth.v1 表示它向 --auth-type 注册新认证类型(安装后 -A jwt/--auth-type jwt 即生效),v1 是插件 API 版本。插件类型家族包括 auth(认证)、converter(请求体转换)、formatter(响应格式化)、transport(协议传输)、download(下载行为)五类(来源:官方文档 httpie.io/docs/cli/plugins,查询日期 2026-10-25)。

# 卸载
httpie plugins uninstall httpie-jwt-auth

实测回显:

Successfully uninstalled httpie-jwt-auth

⚠️ 注意:pipx 安装的 HTTPie,插件被装进 pipx 为其创建的同一 venv(~/.local/share/pipx/venvs/httpie/),不会污染系统 Python;因此插件卸载/升级也应一律走 httpie plugins 而非手工 pip。

5.7 其他环境变量

环境变量实测/来源作用
HTTPIE_CONFIG_DIR本机实测(5.2)重定向整个配置目录
NO_COLOR本机实测(值为任意非空时退出码 0、行为正常,无着色输出)关闭彩色输出(no-color.org 约定)
XDG_CONFIG_HOME官方文档改变默认配置目录的父路径(影响 ~/.config 解析)
http_proxy / https_proxy官方文档常规代理环境变量,--proxy 缺省时 requests 层遵循

六、生产配置模板(可直接抄写)

6.1 交互调试场景(工程师日常)

适用:8GB+ 内存、多人共用的跳板机/开发服务器,追求输出可读与减少重复敲键:

{
    "default_options": [
        "--style=monokai",
        "--print=hb",
        "--default-scheme=https"
    ]
}

逐项说明:--style=monokai 固定深色终端配色(浅色终端换 --style=friendly);--print=hb 显式固定"请求头+响应体"输出习惯;--default-scheme=https 让裸 http api.example.com 默认走 HTTPS,防误发明文。

6.2 脚本与 CI 场景(无人值守)

适用:CI runner、巡检脚本、定时探活——核心诉求是"绝不挂死、失败可见":

{
    "default_options": [
        "--ignore-stdin",
        "--check-status",
        "--timeout=15",
        "--pretty=none"
    ]
}

逐项说明:--ignore-stdin 杜绝 stdin 非 TTY 导致的默认方法漂移(脚本第一坑);--check-status 让 4xx/5xx 映射非零退出码供编排层判断;--timeout=15 防止无超时挂死拖垮任务;--pretty=none 保证日志采集到的是纯文本。⚠️ 此模板影响该用户所有 HTTPie 调用,与交互习惯冲突时请改用脚本内显式传参,勿写全局。

6.3 内网代理场景

{
    "default_options": [
        "--proxy=http:http://192.168.1.62:7897",
        "--proxy=https:http://192.168.1.62:7897"
    ]
}

逐项说明:--proxy 按"协议:URL"逐条声明,http 与 https 各写一行(实测代理可达性见 5.4);仅内网出网走代理的服务器适用,直连环境勿用。

七、常见问题(FAQ)

Q1:config.json 改了不生效? 三步定位:① cat 确认是合法 JSON(python3 -m json.tool ~/.config/httpie/config.json 校验);② 确认改的是当前用户目录(whoami + echo $HOME,root 与普通用户路径不同);③ 用 4.3 的"故意写非法值"手法验证该文件确实被读取;④ 若设过 HTTPIE_CONFIG_DIR,实际读取的是它指向的目录。

Q2:http: warning: invalid config file 怎么处理? 按 5.2 实测回显,warning 会给出具体文件路径;用 python3 -m json.tool 找到语法错误修复即可。warning 不阻断请求,但 default_options 全部失效。

Q3:会话文件里的密码是明文吗? 是(5.5 实测 raw_auth 存凭据原文)。生产服务器上应 chmod 600 会话文件、避免在共享账号环境用 --session,或用 --session-read-only 并自管文件权限。

Q4:插件装完命令没变化? 确认插件注册的入口点:httpie plugins list 第二行的括号内容(如 httpie.plugins.auth.v1)决定它扩展什么能力。auth 类插件安装后用 --auth-type <插件名> 调用;若通过 pipx 装的 HTTPie 又手工 pip 装了插件,两者 venv 不同不会生效——统一走 httpie plugins install。

Q5:能把配置放到系统级让所有用户共享吗? HTTPie 没有系统级配置文件设计,config.json 严格按用户目录解析。共享诉求用 HTTPIE_CONFIG_DIR=/etc/httpie 统一指向(目录权限自行管控),或在 shell profile 里 export。

Q6:如何查看某个选项是否被 default_options 隐式注入? http --debug --offline <URL>:debug 输出的 config.default_options 与最终构造的请求报文可完整对照(5.2/4.3 手法),--offline 保证不发真实请求。

八、参考链接

  1. HTTPie 官方文档·Config:https://httpie.io/docs/cli/config (查询日期 2026-10-25)
  2. HTTPie 官方文档·Sessions:https://httpie.io/docs/cli/sessions (查询日期 2026-10-25)
  3. HTTPie 官方文档·Plugins:https://httpie.io/docs/cli/plugins (查询日期 2026-10-25)
  4. HTTPie 官方插件索引:https://plugins.httpie.io (查询日期 2026-10-25)
  5. 本系列命令实测:《HTTPie 3.2.4 CLI 命令详解》
  6. 本系列安装实测:《Ubuntu 24.04 安装 HTTPie 3.2.4 指南》