人性化 HTTP Client 命令 - httpie #
快速调试 HTTP Web 接口,你首先想到的方案是什么?或许是是图形化能力超强的 Postman,亦或是命令行工具 curl,甚至可能通过浏览器即可。
httpie 是一款更人性化的 HTTP 命令行客户端,简单来说,比 curl 更加易于使用。
安装 #
brew install httpie
快手上手 #
最简单的使用案例,快速发起 GET 和 POST 请求。
GET 请求:
http GET http://httpbin.org/get name==poloxue age==18
POST 请求:
http POST http://httpbin.org/post name=poloxue age=18
http 命令的完整语法,如下所示:
http [flags] [METHOD] URL [ITEM [ITEM]]
体现易用性 #
从易用性角度,如果拷贝一个 url 可直接通过在 scheme 之后添加一个 <space> 便可直接使用:
例如,GET 方法请求 http://httpbin.org/get,如下所示:
http ://httpbin.org/get
演示效果:
另外,METHOD 默认也可省略的,省略规则是:
- 当有 data:POST,如
http ://httpbin.org/post name=poloxue age=18
- 当无 data:GET,如
http ://httpbin.org/get
httpie 还支持一种 offline 模式,debug 神器,只打印 HTTP 请求文本,但不进行网络请求;
http --offline ://httpbin.org/get
输出内容:
GET /get HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: httpbin.org
User-Agent: HTTPie/3.2.2
现在,通过 offline 快速了解 httpie 的 header 设置,query 参数、JSON 请求体 等;
几个规则,如下所示:
- header:使用
key:value
设置 header; - query string,使用
key==value
,表示 query params,快速拼接 query string; - body json data,使用
key=value
即可,更复杂结构,可通过命令管道或文件导入;
一个命令演示下如何设置:
http --offline POST http://httpbin.org/post \
X-API-Token:123456\
User-Agent:foo\
name==poloxue\
age==18\
password=123456\
email=poloxue123@gmail.com
启用 offline 调试模式,输出结果:
POST /post?name=poloxue&age=18 HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 55
Content-Type: application/json
Host: httpbin.org
User-Agent: foo
X-API-Token: 123456
{
"email": "poloxue123@gmail.com",
"password": "123456"
}
输出美化 #
httpie 还有一个能力,它默认会对返回数据进行格式化与语法高亮处理。如此一来,其他的 json 格式化命令就用不到了,如早前介绍的 pp_json
这个命令。毕竟,httpie 的格式美化能力更强大。
想修改它的配色风格?
通过 --style
选项即可修改。
http --style autumn GET ://httpbin.org/get
如果想查看所有可用该配色,直接输入 http --style
即可查看:
输出内容如下:
usage:
http -s/--style {abap, algol, algol_nu, arduino, auto, autumn, borland, bw, colorful, default, dracula, emacs,
friendly, friendly_grayscale, fruity, github-dark, gruvbox-dark, gruvbox-light, igor, inkpot, lightbulb, lilypond,
lovelace, manni, material, monokai, murphy, native, nord, nord-darker, one-dark, paraiso-dark, paraiso-light,
pastie, perldoc, pie, pie-dark, pie-light, rainbow_dash, rrt, sas, solarized, solarized-dark, solarized-light,
staroffice, stata, stata-dark, stata-light, tango, trac, vim, vs, xcode, zenburn} [METHOD] URL [REQUEST_ITEM ...]
error:
argument --style/-s: expected one argument
for more information:
run 'http --help' or visit https://httpie.io/docs/cli
httpie 的格式方式也是可配置的,选项 --pretty
,可配置值有 all|colors|format|none
,看名字大概能猜出它们的区别:
- all,默认值,即高亮又格式化;
- format,不高亮但格式化;
- colors,高亮但不格式化;
http --style=autumn ://httpbin.org/get
演示效果:
文件下载 #
通过 --donwload
即可:
http --download https://github.com/httpie/cli/archive/master.tar.gz
文件下载,除去最基本的需求,肯定还是要支持断点续传的。
要支持断点续传的话,首先,要通过 --output/-o
选项指定输出的文件名称。
http --donwload -o httpie.tar.gz https://github.com/httpie/cli/archive/master.tar.gz
断点续传,要启用 --continue/-c
选项。
为了掩饰效果,选择一个大文件进行下载,下载飞书的海外版 Mac 安装包。
命令如下:
http -dco lark.dmg https://sf16-va.larksuitecdn.com/obj/lark-artifact-storage/49f5b75a/Lark-darwin_x64-6.11.16-signed.dmg
演示效果,如下所示:
httpie 就介绍这么多,其他还有 cookie、session,authentication 等等请自行查阅文档 httpie 文档。