If you find cURL’s syntax a bit too dry for your liking, you could give HTTPie a try. In this article I will go through the basics of making HTTP requests to a REST API using HTTPie.
Install HTTPie
I am on OSX and with brew, installation is a breeze.
$ brew install httpie |
If you are on a different system, check out the installation options
Talk to a REST API
For these examples, I will use the test API @ http://jsonplaceholder.typicode.com/
GET Request
Use http [url] for a basic GET request
$ http jsonplaceholder.typicode.com/posts/1 |
A nice feature of HTTPie is the possibility to use a name==value syntax for your querystring parameters.
Instead of the less readable:
$ http jsonplaceholder.typicode.com/comments?postId=1 |
Use the cleaner:
$ http jsonplaceholder.typicode.com/comments postId==1 |
POST Request
For other verbs than the default GET, use http [verb] [url] [data].
The [data] part of the command uses a white space separated list of key value pairs as defined below:
name=valuefor strings or text.name:=valuefor raw JSON.name=@file.txtto include the content of a text files sent as a string.name:=@data.jsonto include a JSON file used as raw JSON.
Note on raw JSON:
You need to use the raw JSON name:=value notation for booleans and numbers for example. Otherwise bool=false will be interpreted as {bool: 'false'} instead of {bool: false}. Similarly, id=10 would be interpreted as {id: '10'} instead of {id: 10}.
Example
With our test API, to create a new post, we need to send a POST request to http://jsonplaceholder.typicode.com/posts, with the following JSON data:
{ |
The HTTPie request will be
$ http POST jsonplaceholder.typicode.com/posts title=foo body=bar userId:=1 |
PUT Request
PUT Requests work the same way as POST Request:
A PUT Request to http://jsonplaceholder.typicode.com/posts/1
With the data
{ |
becomes
$ http PUT jsonplaceholder.typicode.com/posts/1 id:=1 title=foo body=bar userId:=1 |
DELETE Request
Our DELETE Request does not have any data sent:
$ http DELETE jsonplaceholder.typicode.com/posts/1 |
Check out the excellent documentation for more HTTPie examples.