前言
通常我們需要快速的測試某個接口通不通,一般linux上用curl去發http請求,但是這個命令行工具語法有點復雜了,不夠直觀。
python有一個給人類使用的requests庫,非常的簡單方便。httpie就是基於requests開發的,給人類用的命令行工具,取代curl的絕佳工具。
環境安裝
pip install httpie==1.0.3
查看版本號
C:\Users\dell>pip show httpie
Name: httpie
Version: 1.0.3
Summary: HTTPie - a CLI, cURL-like tool for humans.
Home-page: http://httpie.org/
Author: Jakub Roztocil
Author-email: jakub@roztocil.co
License: BSD
Location: e:\python36\lib\site-packages
Requires: requests, colorama, Pygments
Required-by:
C:\Users\dell>
發送GET請求
get請求不需要帶body參數,所以不帶參數,會被默認識別成get請求
訪問后查看結果,就是這么高效!
C:\Users\dell>http http://127.0.0.1:8000/info
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 290
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:21:25 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
[
{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
},
{
"age": 444444,
"create_time": "2019-09-18",
"id": 6,
"mail": "283340479@qq.com",
"name": "yoyo",
"sex": "M"
}
]
POST請求
GET請求是默認不帶body部分的,那么帶上body部分的參數,肯定會識別成POST請求,所以也不用聲明請求類型。
一般接口是json類型的,所以頭部請求參數類型Content-Type默認是application/json
接下來發個POST請求,比如我要發送的報文是這樣的
POST http://127.0.0.1:8000/info HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: HTTPie/1.0.3
Accept-Encoding: gzip, deflate
Accept: application/json, */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 63
{"name": "yoyo", "sex": "M", "age": "20", "mail": "123@qq.com"}
那么用httpie的命令行只需下面簡單的一行,如果參數是字符串,可以用key=value格式,如果參數不是字符串,那么用key:=value
http http://127.0.0.1:8000/info name=yoyo sex=M age=20 mail=123@qq.com
C:\Users\dell>http http://127.0.0.1:8000/info name=yoyo sex=M age=20 mail=123@qq.com
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 95
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:22:22 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"data": {
"age": "20",
"mail": "123@qq.com",
"name": "yoyo",
"sex": "M"
},
"message": "create some data!"
}
json文件導入
如果json的參數較多,可以把請求參數寫到一個json文件,如test.json
{
"name": "yoyo",
"sex": "M",
"age": "20",
"mail": "123@qq.com"
}
接下來發請求的時候,導入這個json文件就可以
http http://127.0.0.1:8000/info < test.json
測試結果
D:\>http http://127.0.0.1:8000/info < test.json
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 95
Content-Type: application/json
Date: Wed, 18 Sep 2019 14:46:36 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"data": {
"age": "20",
"mail": "123@qq.com",
"name": "yoyo",
"sex": "M"
},
"message": "create some data!"
}
--help查看配置參數
使用--help查看更多配置參數
http --help
顯示詳細的請求,顯示請求的頭部和返回的內容
http -v
只顯示Header
http -h
只顯示Body
http -b
下載文件
http -d
使用http代理
http --proxy=http:http://xxx:x