linux中有人因为httpie(更干爽)放弃了curl
之前在命令行下进行 HTTP 服务的调试和信息查看都是使用经典的 cURL,不过前段时间发现一个交互更加友好的工具,就是 HTTPie。
之前在命令行下进行 HTTP 服务的调试和信息查看都是使用经典的 cURL,不过前段时间发现一个交互更加友好的工具,就是 HTTPie。
先放一个 HTTPie 官方的一个 HTTPie VS cURL 的图给大家看看。

HTTPie 则在使用时的表现力、人性化做得比 wget、curl 好得多,就像在官网上宣传的那样,它追求的是人性化、简单自然的语法,以及彩色的输出。而且 HTTPie 还有一些不错的优点,比如对 JSON 的良好支撑、持久性会话等特性。
Linux 上安装
Debian, Ubuntu 或 Linux Mint
sudo apt-get install httpie
Fedora,CentOS/RHEL
sudo yum install httpie
或者使用 python 的方式来安装
sudo pip install --upgrade httpie
Mac OSX
brew install httpie
安装开发版本
# Mac OSX
brew install httpie --HEAD
# Python安装方式
pip install --upgrade https://github.com/jkbrzt/httpie/tarball/master
定制头部
http rumenz.com/test/ User-Agent:Xmodlo/1.0 Referer:http://rumenz.com
这个 HTTP 请求看起是这样。
GET /test/ HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: rumenz.com
Referer: http://rumenz.com
User-Agent: Xmodlo/1.0
下载文件
你也可以把 HTTPie 作为文件下载器来使用。
http rumenz.com/test/ > httpie-howto.html
-
或者
http --download rumenz.com/test/
使用其他 HTTP 方法
除了默认的 GET 方法,你还可以使用其他方法(比如 PUT、POST、DELETE、HEAD)
PUT
http PUT rumenz.com name='XAMPP中文组' email='rumenz@email.com'
POST
http -f POST rumenz.com name='XAMPP中文组' email='rumenz@email.com'
-f
选项使 http 命令序列化数据字段,并将Content-Type
设置为application/x-www-form-urlencoded;charset=utf-8
这个 HTTP POST 请求看起这样:
POST / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 41
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: rumenz.com
User-Agent: HTTPie/0.9.2
name=ru+menz&email=rumenz@email.com
HEAD
http HEAD rumenz.com
HEAD
这个方法只会让服务器返回http response headers
。
这个命令结果如下:
Request
HEAD / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: rumenz.com
User-Agent: HTTPie/0.9.2
Response
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Age: 0
Cache-Control: max-age=600
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 36794
Content-Type: text/html; charset=utf-8
Date: Wed, 15 Jul 2015 09:26:22 GMT
Expires: Wed, 15 Jul 2015 09:36:22 GMT
Last-Modified: Sun, 12 Jul 2015 11:32:15 GMT
Server: GitHub.com
Vary: Accept-Encoding
Via: 1.1 varnish
X-Cache: MISS
X-Cache-Hits: 0
X-Served-By: cache-fra1227-FRA
X-Timer: S1436952382.011631,VS0,VE99
JSON 支持
HTTPie 内置 JSON 的支持。事实上 HTTPie 默认使用的
Content-Type
就是application/json
。因此,当你不指定Content-Type
发送请求参数时,它们就会自动序列化为 JSON 对象。
http POST rumenz.com name='XAMPP中文组' email='rumenz@email.com'
这个请求看起来就是这样:
POST / HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 52
Content-Type: application/json
Host: rumenz.com
User-Agent: HTTPie/0.9.2
{
"email": "rumenz@email.com",
"name": "XAMPP中文组"
}
输入重定向
HTTPie 的另外一个友好特性就是输入重定向,你可以使用缓冲数据提供 HTTP 请求内容。例如:
http POST rumenz.com < my_info.json
-
或:
echo '{"name": "入门小站","email": "rumenz@email.com"}' | http POST rumenz.com
转载请注明:XAMPP中文组官网 » linux交互更加友好的工具HTTPie