Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
HTTPie ist ein Kommandozeilenprogramm zum Erstellen von HTTP-Abfragen und Download von Dateien. Es deckt also den gleichen Einsatzbereich wie cURL und in Teilen wget ab, wobei sich die Entwickler von HTTPie zum Ziel gesetzt haben, anwenderfreundlicher als die beiden genannten Programme zu sein.
HTTPie ist in Python geschrieben und auf allen gängigen Betriebssystemen wie Linux, MacOS und Windows lauffähig.
HTTPie kann aus den offiziellen Paketquellen oder manuell installiert werden. Je nach Ubuntu-Version ist die Version des Programms in den Quellen relativ alt, so dass die manuelle Installation gegebenenfalls vorzuziehen ist.
Die Installation aus den offiziellen Paketquellen erfolgt über das folgende Paket [1]:
httpie (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install httpie
sudo aptitude install httpie
HTTPie wird über den Befehl http
in der Kommandozeile [3] aufgerufen. Die allgemeine Syntax lautet:
http [OPTIONEN] [HTTP-METHODE] URL [PARAMETER]
Im einfachsten Fall gibt man nur eine Internet-Adresse (URL) an, dann sendet HTTPie standardmäßig mit der HTTP-Methode GET
. So würde der Aufruf von
http https://httpie.org
die Startseite der HTTPie-Webseite laden und auf stdout (also in der Regel dem Terminal) anzeigen:
HTTP/1.1 200 OK CF-RAY: 31d0954048236451-FRA Connection: keep-alive Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Date: Fri, 06 Jan 2017 16:35:24 GMT Server: cloudflare-nginx Set-Cookie: __cfduid=d41b52ae4db3b4e45d73e83ff16f3cadc1483720524; expires=Sat, 06-Jan-18 16:35:24 GMT; path=/; domain=.httpie.org; HttpOnly Transfer-Encoding: chunked <!doctype html> <html id="page-home"> <head> <meta charset="utf-8"/> <title>HTTPie – command line HTTP client</title> <meta name="description" content="HTTPie is a command line HTTP client that will make you smile."> <meta name="viewport" content="width=device-width, initial-scale=1"> <script> ...
Wie im Beispiel zu sehen ist, wird zuerst der HTTP-Header ausgegeben und dann der eigentlich Quelltext der Webseite. Möchte man die Daten speichern, nutzt man einfach die üblichen Umleitungen im Terminal.
HTTPie unterstützt auch andere HTTP-Methoden statt GET
. Um diese auszuführen, muss man dem Befehl einfach das entsprechende HTTP-Verb mit geben. So würden z.B.
http DELETE example.com/foo/123
eine DELETE
Anfrage an die angegebene URL senden.
Man kann auch Daten angeben, die mit der Anfrage mitgeschickt werden. Ohne weitere Optionen werden diese im JSON-Format mitgesendet. So würde z.B. der Aufruf
http PUT example.com/bar/234 vorname=Rainer nachname=Titan
eine PUT
Anfrage an die angegebene URL senden, den Content-Type automatisch auf Content-Type: application/json
setzen und die Daten in der Form
1 2 3 4 | { "vorname":"Rainer", "nachname":"Titan" } |
senden.
HTTPie kennt eine ganze Reihe von Optionen:
Optionen von HTTPie | |
Option | Erklärung |
-h , --header | Es wird nur der Header der Abfrage ausgegeben |
-b , --body | Es wird nur der Body (also der eigentliche Inhalt) der Abfrage ausgegeben |
-v , --verbose | Ausführliche Ausgabe, inklusive der kompletten HTTP-Kommunikation zwischen HTTPie und Server |
-a , --auth | Sendet Daten zur Authentifizierung mit. Man kann Benutzernamen und Password in der Form -a NUTZER:PASSWORT angeben oder nur den Nutzernamen -a NUTZER . Bei letzterem muss man dann das Passwort an der Eingabeaufforderung eingeben. |
-A --auth-type | Legt den Authentifizierungstyp fest. Standard ist BASIC , über -A DIGEST würde die Digest-Authentifizierung genutzt. Weitere Authentifizierungsmethoden können über Plugins nachgerüstet werden. |
-f , --form | Sendet Daten als Formular mit. So würde z.B. http -f example.com/inputform user='Otto Normal' age=37 an die angegebene URL den Wert Otto Normal für das Formularfeld user und den Wert 37 für das Formularfeld age senden. Der Aufruf von http -f example.com/upload imagename@/home/NUTZER/mein_bild.jpg würde an die angegebene URL an das Formularfeld imagename (was natürlich vom Typ file sein sollte) die Datei /home/NUTZER/mein_bild.jpg senden. |
HTTPie kennt noch eine Reihe weiterer Optionen, unter anderem zum Umgang mit Sessions, SSL, Streaming usw. Diese sind in der im Abschnitt Links genannten (englischsprachigen) Dokumentation erklärt.
Möchte man mit HTTPie eine Datei herunterladen, dann lautet die Option -d
oder --download
. So würde z.B.
http -d ftp.halifax.rwth-aachen.de/ubuntu-releases/16.04/ubuntu-16.04.1-desktop-amd64.iso
das ISO-Image von Ubuntu 16.04 vom angegebenen Server herunterladen. Die Datei wird im Verzeichnis gespeichert, aus dem heraus der Befehl aufgerufen wurde. HTTPie besitzt eine Fortschrittsanzeige, so dass man sieht, wie weit der Download schon fortgeschritten ist.
Gibt man zusätzlich die Option -o NEUER_NAME
an, wird die Datei unter dem angegebenen Namen gespeichert, im folgenden Beispiel also ubuntu.iso:
http -o ubuntu.iso -d ftp.halifax.rwth-aachen.de/ubuntu-releases/16.04/ubuntu-16.04.1-desktop-amd64.iso
Die Option -o
ist immer dann zwingend, wenn der Download ggf. unterbrochen und später wieder aufgenommen wird (sofern der Server dies unterstützt).
Würde man den obigen Download z.B. über
Strg +
C abbrechen, dann könnte er mit der Option -c
wieder aufgenommen und fortgesetzt werden:
http -c -o ubuntu.iso -d ftp.halifax.rwth-aachen.de/ubuntu-releases/16.04/ubuntu-16.04.1-desktop-amd64.iso
Wie oben erwähnt unterstützt HTTPie von sich aus nur die Authentifizierungsmethoden "BasicAuth" und "Digest". Weitere Methoden wie z.B. OAuth oder HMAC können aber über Plug-Ins nachinstalliert werden. Die Plugins werden einfach via pip installiert.
Eine Übersicht über die verfügbaren Plugins findet man in der Dokumentation zu den Auth-Plugins .
Diese Revision wurde am 22. Januar 2017 17:08 von aasche erstellt.