HTTPie - a CLI, cURL-like tool for humans
HTTPie (pronounced aych-tee-tee-pie) is a command line HTTP client. Its
goal is to make CLI interaction with web services as human-friendly as
possible. It provides a simple http
command that allows for sending
arbitrary HTTP requests using a simple and natural syntax, and displays
colorized output. HTTPie can be used for testing, debugging, and
generally interacting with HTTP servers.
HTTPie is written in Python, and under the hood it uses the excellent
Requests and Pygments libraries.
Main Features
- Expressive and intuitive syntax
- Formatted and colorized terminal output
- Built-in JSON support
- Forms and file uploads
- HTTPS, proxies, and authentication
- Arbitrary request data
- Custom headers
- Persistent sessions
- Wget-like downloads
- Python 2.6, 2.7 and 3.x support
- Linux, Mac OS X and Windows support
- Plugins
- Documentation
- Test coverage
Installation
On
Mac OS X, HTTPie can be installed via Homebrew:
$ brew install httpie
Most
Linux distributions provide a package that can be installed using the
system package manager, e.g.:
# Debian-based distributions such as Ubuntu:
$ apt-get install httpie
# RPM-based distributions:
$ yum install httpie
A
universal installation method (that works on
Windows, Mac OS X, Linux, …,
and provides the latest version) is to use pip:
# Make sure we have an up-to-date version of pip and setuptools:
$ pip install --upgrade pip setuptools
$ pip install --upgrade httpie
(If
pip
installation fails for some reason, you can try
easy_install httpie
as a fallback.)
Development version
The
latest development version can be installed directly from GitHub:
# Mac OS X via Homebrew
$ brew install httpie --HEAD
# Universal
$ pip install --upgrade https://github.com/jkbrzt/httpie/tarball/master
Usage
Hello World:
Synopsis:
$ http [flags] [METHOD] URL [ITEM [ITEM]]
See also
http --help
.
Examples
Custom HTTP method, HTTP headers and JSON data:
$ http PUT example.org X-API-Token:123 name=John
Submitting forms:
$ http -f POST example.org hello=World
See the request that is being sent using one of the output options:
Use Github API to post a comment on an
issue
with authentication:
$ http -a USERNAME POST https://api.github.com/repos/jkbrzt/httpie/issues/83/comments body='HTTPie is awesome!'
Upload a file using redirected input:
$ http example.org < file.json
Download a file and save it via redirected output:
$ http example.org/file > file
Download a file
wget
style:
$ http --download example.org/file
Use named sessions to make certain aspects or the communication persistent
between requests to the same host:
$ http --session=logged-in -a username:password httpbin.org/get API-Key:123$ http --session=logged-in httpbin.org/headers
Set a custom
Host
header to work around missing DNS records:
$ http localhost:8000 Host:example.com
What follows is a detailed documentation. It covers the command syntax,
advanced usage, and also features additional examples.
HTTP Method
The name of the HTTP method comes right before the URL argument:
$ http DELETE example.org/todos/7
Which looks similar to the actual
Request-Line
that is sent:
When the
METHOD
argument is
omitted from the command, HTTPie defaults to
either
GET
(with no request data) or
POST
(with request data).
Request URL
The only information HTTPie needs to perform a request is a URL.
The default scheme is, somewhat unsurprisingly,
http://
,
and can be omitted from the argument –
http example.org
works just fine.
Additionally, curl-like shorthand for localhost is supported.
This means that, for example
:3000
would expand to
http://localhost:3000
If the port is omitted, then port 80 is assumed.
GET /foo HTTP/1.1
Host: localhost
GET /bar HTTP/1.1
Host: localhost:3000
GET / HTTP/1.1
Host: localhost
If you find yourself manually constructing URLs with
querystring parameters
on the terminal, you may appreciate the
param==value
syntax for appending
URL parameters so that you don't have to worry about escaping the
&
separators. To search for
HTTPie
on Google Images you could use this
command:
$ http GET www.google.com search==HTTPie tbm==isch
GET /?search=HTTPie&tbm=isch HTTP/1.1
0 comments: