Use HTTPie to Work together With APIs from Your Terminal – CloudSavvy IT

Posted on

Screenshot of HTTPie example request

HTTPie is an HTTP shopper on your terminal. Designed as a contemporary various to curl, HTTPie simplifies interplay with APIs by providing an easy syntax and routinely formatted output.

Accessible on Home windows, Mac and Linux, getting setup needs to be an easy affair. Most Linux distributions now embrace HTTPie inside their package deal repositories, so you’ll be able to shortly apt, dnf or pacman to start. It’s additionally obtainable by way of Homebrew for Mac customers, and as a Python package deal delivered by way of Pip on all three platforms (pip set up httpie).

As soon as put in, HTTPie registers the http and https instructions in your shell. You’ve now received a easy and expressive method to name API endpoints with out leaving your terminal!

Primary Instructions

At its easiest, HTTPie may be handed a URL to instantly make a GET request:


To ship knowledge, specify the suitable HTTP verb after which go your key/worth pairs as extra command-line parameters:

http POST foo=bar hi there=world

By default, knowledge is shipped as JSON with applicable request headers. To submit as a type as a substitute, go the -f parameter.

When utilizing the JSON syntax, remember that every one fields are usually despatched as strings. You should use the := syntax as a substitute of = to modify to uncooked knowledge mode. A parameter examples:='[1, 2]' will then end result within the examples key being set to an array of two integers.

Headers and Cookies

To set a request header, specify the header’s identify and worth as a colon-separated string:

http GET Authorization:foobar

HTTPie units some headers, similar to Consumer-Agent, by default. These may be eliminated by explicitly specifying them with an empty worth.

Cookies are set by defining a string with the cookies as colon-delimited values:

http GET "Cookie:foo=bar;hi there=world"

That is actually only a particular case of setting the Cookie header, which is how cookies are despatched over HTTP.

Working With Recordsdata

You possibly can add and obtain recordsdata utilizing commonplace shell redirects:

http POST < ~/instance.pdf
http GET > ~/obtain.pdf

You may also add recordsdata as a part of an HTTP type submission through the use of the particular @ syntax:

http -f POST hi there="Hey World" myUpload@~/instance.pdf

This may act identically to an HTML file enter with identify="myUpload". You could as a substitute load knowledge from a file and embed it into the request utilizing the =@ syntax, as a substitute of @.


HTTPie has built-in help for persistent classes. These will let you reuse request elements, similar to HTTP headers and cookies, between requests made to the identical host.

You create and use classes by setting the --session parameter. As its worth, specify the trail to a file which can be used to retailer your new session.

http --session=./my-session.json GET Authorization:foobar

Knowledge which is supported by classes, such because the Authorization header within the above request, will now be saved into the file. On subsequent requests, chances are you’ll now omit the Authorization header – it’ll be included routinely because it’s outlined in your session.

As a substitute of specifying a session file, you may additionally use a easy identify (--session=instance). On this case, HTTPie will routinely save the session to an internally managed file. Every session is tied to the host it originates from, so http --session=instance and http --session=instance will exist independently of one another.

Managing Output

One among HTTPie’s vital enhancements over utilities like curl is its automated formatting of responses. JSON our bodies are significantly well-handled, with correct indentation, alphabetical sorting of objects by their keys and proper conversion of Unicode characters.

You possibly can customise how output is rendered utilizing just a few totally different choices. The --pretty flag may be set to --all (default), --colors (solely colors), --format (solely formatting) or --none (to disable all output processing and see the uncooked knowledge).

Screenshot of HTTPie JSON output

As well as, you’ll be able to change the color scheme utilizing the --style flag. The obtainable schemes are auto (the default), default (use the underlying Pygments library types), fruity and the favored monokai.

You don’t want to fret concerning the default formatting when redirecting output right into a file. HTTPie will recognise that it’s being redirected and easily pipe the uncooked knowledge with out making use of any formatting. This additionally implies that binary responses, that are by no means usually emitted to the terminal, may be piped into recordsdata.

Configuration File

HTTPie helps a primary configuration file which can be utilized to outline default settings. These can be utilized to all requests you make. The file needs to be saved to ~/.config/httpie/config.json on Linux/Mac and %APPDATApercenthttpieconfig.json on Home windows.

A single configuration key’s supported, default_options, which accepts a primary array of parameters to append to HTTPie instructions you execute:

    "default_options": [

Any possibility which is supported by HTTPie’s command-line interface may be included. You possibly can override your default choices by defining them with a brand new worth every time you run HTTPie.


HTTPie is a feature-filled software that brings HTTP APIs to your terminal. Its a contemporary various to Unix staples like curl that’s designed for normal use by builders and testers. Though the syntax may be cumbersome at instances, it’s usually expressive and memorable.

It’s price taking the time to learn the official documentation for those who’re seeking to be taught extra about HTTPie. All improvement happens within the open on GitHub, with help supplied on Gitter and StackOverflow.

Source link

Gravatar Image
I love to share everything with you

Leave a Reply

Your email address will not be published. Required fields are marked *