Het Unix-programma curl is een commandline-tool om gegevens via een URL-syntax te downloaden of te uploaden. Veel ontwikkelaars gebruiken curl ook als tool om web services op de commandline of in scripts te testen. Een voorbeeld: als we de methode put willen aanroepen en daarbij de variabele foo de waarde bar geven in JSON-syntax (JavaScript Object Notation), dan kan dit als volgt (we gebruiken hiervoor de handige testdienst httpbin.org):

$ curl -i -X PUT -H 'Content-Type:application/json; charset=utf-8' \

-d '{"foo":"bar"}' http://httpbin.org/put

Dit werkt natuurlijk, maar de syntax is toch niet zo eenvoudig, waardoor je gemakkelijk een fout maakt. En dit is dan nog een eenvoudig commando. In complexere scenario's verzeil je al vlug in ellenlange curl-opdrachten.

httpie

Jakub Roztocil ontwikkelde daarom httpie, een commandline curl-achtig programma maar met een syntax die door mensen nog te onthouden is. De bovenstaande curl-opdracht wordt met httpie bijvoorbeeld sterk vereenvoudigd tot:

$ http PUT httpbin.org/put foo=bar

Opgelet: hoewel het programma httpie heet, is het commando dat geïnstalleerd wordt en dat je moet aanroepen http.

Een ander voordeel van httpie ten opzichte van curl is dat het kleur in zijn uitvoer brengt. Zo krijgt de http statuscode een andere kleur, evenals de waarden van de headers. En als de gegevens van het resultaat html vormen, krijgen deze ook syntax highlighting.

Eenvoudige syntax

De algemene vorm van een httpie-opdracht is:

$ http [flags] METHOD URL [items]

Hierin is METHOD de gebruikte http-methode, zoals GET, POST, PUT, DELETE, PATCH, ... In URL vul je de url in van de web service, waarbij httpie automatisch http:// als protocol gebruikt als je dit niet expliciet opgeeft.

De items zijn één of meer key/value paren. Ofwel is dat een data-item, zoals foo=bar in ons voorbeeld, waarbij de variabele en zijn waarde door een gelijkheidsteken gescheiden worden. Ofwel is dat een willekeurige http-header, waarbij de header en zijn waarde door een dubbele punt gescheiden worden, zoals X-API-Token:123. Ofwel gaat het om een ruw JSON-item, waarbij dan := als syntax gebruikt wordt, zoals in pies:=[1,2,3]. Verder ondersteunt httpie nog een heel aantal flags. Voer http -h uit om de volledige lijst te zien.