HTTPie
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.
Installation¶
HTTPie kann aus den offiziellen Paketquellen oder manuell installiert werden. Je nach Ubuntu-Version ist die Version des Programms in den Quellen relativ bzw. sehr alt, so dass die manuelle Installation gegebenenfalls vorzuziehen ist.
Für die Installation der Entwcklungsversion siehe zusätzlich die Dokumentation 🇬🇧.
Die Installation aus den offiziellen Paketquellen erfolgt über das folgende Paket [1]:
httpie (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install httpie
Oder mit apturl installieren, Link: apt://httpie
via pip¶
Wie bei Python üblich kann das Programm mit dem Python-Paketmanager pip installiert werden.
Der Python Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:
pip3 install httpie # Programm wird nur für den aktuellen Nutzer installiert
Hinweis!
Fremdsoftware kann das System gefährden.
Verwendung¶
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.
HTTP-Methoden¶
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. Weitere Informationen finden sich in der Dokumentation 🇬🇧.
Optionen¶
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 viele weitere Optionen, unter anderem zum Umgang mit Sessions, SSL, Streaming usw. Diese sind in der im Abschnitt Links genannten (englischsprachigen) Dokumentation erklärt.
Downloads mit HTTPie¶
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
Plug-Ins zur Authentifizierung¶
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 🇬🇧.
Links¶
Ausführliche Dokumentation 🇬🇧 zu HTTPie