ubuntuusers.de

HTTPie

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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.

Die Installation aus den offiziellen Paketquellen erfolgt über das folgende Paket [1]:

  • httpie (universe)

Paketliste zum Kopieren:

sudo apt-get install httpie 

Oder mit apturl installieren, Link: apt://httpie

Manuell

Wie bei Python üblich kann das Programm via pip installiert werden:

Wer die neueste Version installieren möchte, kann das Programm über den Python Paketmanager pip installieren:

pip3 install --user 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.

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 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.

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 🇬🇧.

Diese Revision wurde am 8. August 2020 14:07 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell, Download, Internet