HTTPie:a CLI, cURL-like tool for humans

HTTPie






github


HTTPie 是用 Python 编写,用到了 Requests 和 Pygments 这些出色的库。



主要特性:

  • 直观的语法
  • 格式化和色彩化的终端输出
  • 内置 JSON 支持
  • 支持上传表单和文件
  • HTTPS、代理和认证
  • 任意请求数据
  • 自定义头部
  • 持久性会话
  • 类 Wget 下载
  • 支持 Python 2.6, 2.7 和 3.x
  • 支持 Linux, Mac OS X 和 Windows
  • 插件
  • 文档
  • 测试覆盖率

安装


Mac OS X

$ brew install httpie

Linux 

# Debian-based distributions such as Ubuntu:
$ apt-get install httpie

# RPM-based distributions:
$ yum install httpie

通过pip:

# Make sure we have an up-to-date version of pip and setuptools:
$ pip install --upgrade pip setuptools

$ pip install --upgrade httpie


使用

        

hello world

$ http httpie.org

http --help


参考手册

https://pypi.python.org/pypi/httpie



例子

  • 自定义HTTP方法,HTTP header和JSON数据

$ http PUT example.org X-API-Token:123 name=John

  • 提交表单

$ http -f POST example.org hello=World
  • 打印发送请求使用的输出项

$ http -v example.org
  • 利用使用Github API发布评论和验证一个问题

$ http -a USERNAME POST https://api.github.com/repos/jakubroztocil/httpie/issues/83/comments body='HTTPie is awesome!'
  • 使用重定向输入上传一个文件

$ http example.org < file.json
  • 下载一个文件并通过重定向输出将其保存

$ http example.org/file > file

  • wget风格下载文件

$ http --download example.org/file
  • 使用session保持请求相同的主机之间的通信
$ http --session=logged-in -a username:password httpbin.org/get API-Key:123

$ http --session=logged-in httpbin.org/headers
  • 设置一个自定义的主机头工作在失踪的DNS记录:
$ http localhost:8000 Host:example.com

HTTP Method

HTTP 请求方法位于 URL的左边,下面是使用DELETE方法进行请求

$ http DELETE example.org/todos/7

就像执行了下面的request-line命令行

DELETE /todos/7 HTTP/1.1

HTTPie 默认使用 GET (with no request data) 或者 POST (with request data).

Request URL

 HTTPie 需要请求一个URL. 默认的 scheme 是 https://, 而且可以省略参数 – http , example.org就代表了 https://example.org,此外,支持curl类似的localhost, 例如  :3000 代表 https://localhost:3000, 默认是80端口

$ http :/foo
GET /foo HTTP/1.1
Host: localhost
$ http :3000/bar
GET /bar HTTP/1.1
Host: localhost:3000
$ http :
GET / HTTP/1.1
Host: localhost

当手动在url中添加 querystring parameters , 可以直接使用 key==value key==value  的形式而不用担心 & 符号. 

$ http GET www.google.com search==HTTPie tbm==isch
GET /?search=HTTPie&tbm=isch HTTP/1.1