目录
一、概述
HTTPie 是一个非常易用、易于升级的 HTTP 客户端。它的发音为 “aitch-tee-tee-pie” 并以 http 命令运行,它是一个用 Python 编写的来用于访问 Web 的命令行工具。它提供了简单的http命令,返回带代码高亮的结果信息,可以很方便的在http交互场景下进行测试、调试等。
Wget 和 cURL 的替代品:(适用于终端等场景,非终端场景直接使用Postman等工具)
Wget 或稍微新一些的 cURL 工具,它们允许你从命令行访问 Web,它们是为访问网站而编写的,而 HTTPie 则用于访问 Web API。
网站请求发生在计算机和正在阅读并响应它所看到的内容的最终用户之间,这并不太依赖于结构化的响应。但是,API 请求会在两台计算机之间进行结构化调用,人并不是该流程内的一部分,像 HTTPie 这样的命令行工具的参数可以有效地处理这个问题。
二、安装httpie
Windows或CentOS:
pip3 install httpie
三、使用httpie
下面主要以 http://httpbin.org 网站来进行测试
使用语法:
http [flags] [METHOD] URL [ITEM [ITEM]]
METHOD没有指定时,默认为 get,URL协议没有指定时,默认为 http://
可以通过help命令查看使用方法:
http --help
usage:
http [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
HTTPie: modern, user-friendly command-line HTTP client for the API era. <https://httpie.io>
Positional arguments:
These arguments come after any flags and in the order they are listed here.
Only URL is required.
METHOD
The HTTP method to be used for the request (GET, POST, PUT, DELETE, ...).
This argument can be omitted in which case HTTPie will use POST if there
is some data to be sent, otherwise GET:
$ http example.org # => GET
$ http example.org hello=world # => POST
URL
The request URL. Scheme defaults to 'http://' if the URL
does not include one. (You can override this with: --default-scheme=http/https)
You can also use a shorthand for localhost
$ http :3000 # => http://localhost:3000
$ http :/foo # => http://localhost/foo
......
For every --OPTION there is also a --no-OPTION that reverts OPTION
to its default value.
Suggestions and bug reports are greatly appreciated:
https://github.com/httpie/httpie/issues
1、GET请求
Ps:若需要带参数时用 param==value 的形式
http httpbin.org/get name==Zarten zhihu_id==Zarten
返回结果如下:
也可以指定内容输出,比如只输出body内容,命令如下:
http httpbin.org/get name==Zarten zhihu_id==Zarten --print b
输出结果:
2、POST请求
Ps:post请求时表单用 = ,默认为post
http httpbin.org/post name=Zarten
- 传递json
格式跟上面差不多,若传递值不是字符串时,用 :=
若当进行post请求时,传递数据太多,我们可以直接传一个json类型文件,用 =@ 和 :=G
json.txt
{
"name": "Zarten",
"age": 1,
"hobbies": [
"http",
"pies"
],
"description": "John is a nice guy who likes pies.",
"married": false,
"name": "John",
"bookmarks": {
"HTTPie": "http://httpie.org",
}
}
命令示例:(使用上面的json.txt文件)
http httpbin.org/post myinfo=@json.txt
返回结果:可以看出返回的json字段值就是我们传入的json.txt中的值。
- 提交表单
提交表单只需添加 -f 或 --form即可
- 设置请求头
从上图中可以看出,有些请求头是默认的,例如User-Agent为 "HTTPie/0.9.9",通常我们需要修改请求头,只需设置形式如: header:value
3、下载二进制文件
有时响应体并不是文本形式,它需要发送到可被不同应用打开的文件,比如一个图片:
$ http GET https://httpbin.org/image/jpeg
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 35588
Content-Type: image/jpeg
Date: Tue, 07 Jun 2022 13:20:04 GMT
Server: gunicorn/19.9.0
+-----------------------------------------+
| NOTE: binary data not shown in terminal |
+-----------------------------------------+
使用download参数:
$ http --download GET https://httpbin.org/image/jpeg
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 35588
Content-Type: image/jpeg
Date: Tue, 07 Jun 2022 13:21:20 GMT
Server: gunicorn/19.9.0
Downloading to jpeg.jpg
Done. 35.6 kB in 00:0.24230 (146.9 kB/s)