Httpie ist ein Konsolen-HTTP-Client mit menschenlesbarer Syntax und farbiger Ausgabe, der zum Testen von APIs von der Kommandozeile aus entwickelt wurde. Das Tool verwendet eine intuitive Syntax: http GET https://api.example.com/users ohne die Notwendigkeit, Flags für Header und Anforderungstext anzugeben. Laut Httpie CLI Documentation (2026) unterstützt das Dienstprogramm standardmäßig JSON, Sitzungen, Authentifizierung und Plugins.
Das Wichtigste
Httpie (oder HTTPie) ist ein in Python geschriebenes Kommandozeilen-Dienstprogramm, das das Senden von HTTP-Anfragen im Vergleich zu cURL vereinfacht. Der Hauptunterschied ist eine Syntax, die der natürlichen Sprache nahekommt: Argumente werden durch Leerzeichen getrennt, Header werden mit einem Doppelpunkt angegeben und JSON-Daten mit einem Gleichheitszeichen ohne Maskierung von Anführungszeichen.
Dieselbe POST-Anfrage in cURL erfordert mindestens drei Flags (-X, -H, -d) und manuelles Maskieren von JSON. Httpie macht dasselbe mit drei Wörtern ohne Flags, setzt automatisch Content-Type: application/json und hebt die Ausgabe hervor. Die Antwort wird standardmäßig mit Einrückungen und Syntaxhervorhebung formatiert.
| Operation | cURL | Httpie |
|---|---|---|
| GET-Anfrage | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| Header | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie verwendet ein einheitliches Kommandozeilenformat ohne Flags für die wichtigsten Parameter. Die HTTP-Methode wird als erstes Argument angegeben (GET, POST, PUT, DELETE, PATCH), die URL als zweites. Wird die Methode weggelassen, wählt Httpie automatisch GET (für Anfragen ohne Text) oder POST (mit Text).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie ermittelt automatisch den Datentyp: Wenn key=value übergeben wird, wird der Text als JSON gesendet. Wird Rohtext über --raw übergeben, wird er als Klartext gesendet. Das form-data-Format wird mit dem Flag -f aktiviert.
# POST-Anfrage mit JSON-Daten und einem Header
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Antwort mit Hervorhebung und Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Die JSON-Serialisierung in Httpie funktioniert automatisch: Ein als key=value übergebener Wert wird zu einem String-Feld des JSON. Für Zahlen und boolesche Werte wird key:=value verwendet. Verschachtelte Objekte werden mit Punktnotation erstellt: address.city=Moscow.
Httpie unterstützt das multipart/form-data-Format zum Hochladen von Dateien und Daten über die key@path-Syntax. Soll der Dateiinhalt als Rohtext der Anfrage gesendet werden, wird eine Eingabeumleitung verwendet: http POST example.com < file.json. Zum Herunterladen der Antwort in eine Datei wird das Flag -d (download) verwendet.
# Senden von JSON aus einer Datei
http POST https://api.example.com/users < user.json
# Hochladen einer Datei über multipart
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Sitzungen in Httpie speichern den Zustand zwischen Anfragen: Cookies, Header und Authentifizierungsparameter. Eine Sitzung wird mit dem Flag --session=name erstellt. Die Sitzungsdaten werden in einer JSON-Datei im Ordner ~/.httpie/sessions/ gespeichert. Eine Sitzung mit dem Suffix :readonly wird nach einer Anfrage nicht aktualisiert.
Zunächst wird eine POST-Anfrage an /auth/login mit den Anmeldedaten gesendet — der Server gibt ein Sitzungs-Cookie zurück. Alle nachfolgenden Anfragen an geschützte Endpunkte innerhalb derselben Sitzung senden automatisch das gespeicherte Cookie, was das Browserverhalten beim Testen der API einer mobilen App simuliert.
# Schritt 1: Authentifizierung
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Schritt 2: Anfrage mit gespeichertem Sitzungs-Cookie
http --session=app-test GET https://api.example.com/users/me
Httpie unterstützt alle gängigen Authentifizierungstypen über Flags: -a user:pass für Basic Auth, --auth-type=digest für Digest, --auth-type=bearer TOKEN für Bearer Token. Benutzerdefinierte Header werden als HeaderName:value an beliebiger Stelle im Befehl hinzugefügt.
Zum Testen einer API mit OAuth 2.0 wird das Token über den Authorization-Header übergeben. Httpie verwaltet den Lebenszyklus des Tokens nicht auf Kernel-Ebene — das übernimmt ein externes Skript. Der Befehl http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource entspricht der expliziten Angabe des Headers mit dem Token.
Httpie ist dank null Abhängigkeiten (außer Python) und lesbarer Ausgabe ideal für CI/CD-Pipelines. Befehle sind ohne zusätzliches Parsen gut in Logs lesbar. Das Tool wird über pip installiert und ist in allen gängigen Docker-Images verfügbar, einschließlich Alpine, Ubuntu und den offiziellen CI-Images von Jenkins und GitLab. Das macht Httpie zu einer praktischen Wahl für automatisierte Tests von REST-APIs und Microservices.
Ein typisches Szenario ist die Prüfung des API-Status nach dem Deployment einer Anwendung. Httpie sendet eine Anfrage an den Health-Endpunkt und beendet sich mit einem Code ungleich null, wenn die Antwort nicht der erwarteten entspricht. Das Flag --check-status gibt bei Statuscodes >= 300 automatisch einen Fehler zurück.
# Health-Check im Deployment-Skript
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API ist gesund" || \
echo "API-Prüfung fehlgeschlagen"
Httpie unterstützt Plugins über das Package-Index-System. Plugins fügen neue Authentifizierungstypen, Serialisierungsformate und Transporte hinzu. Die Installation erfolgt über pip: pip install httpie-plugin-name. Nach der Installation wird das Plugin beim nächsten Start von Httpie automatisch aktiviert.
Httpie unterstützt jq-ähnliche Filterung über die Option --pretty=format und cURL-kompatible Ausgabe über --print. Das Flag --quiet deaktiviert die farbige Ausgabe für eine bessere Lesbarkeit in CI-Logs. Für die programmatische Verarbeitung der Antwort verwenden Sie das Flag --body, das nur den Antworttext ohne Header ausgibt.
# Extrahieren eines Felds aus einer JSON-Antwort mit jq
http GET https://api.example.com/users/1 | jq '.name'
# Nur den Antworttext ausgeben (ohne Header)
http --body GET https://api.example.com/health
# Stapel-Senden mit verschiedenen Daten aus einer Datei
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie unterstützt Ausgabeformate über das Flag --print: H (Anforderungs-Header), B (Anforderungstext), h (Antwort-Header), b (Antworttext). Die Kombination --print=hb gibt nur die Antwort-Header und den Text aus. Das Flag --pretty=all aktiviert die farbige Formatierung mit Einrückungen.
Httpie unterstützt die Anpassung über die Variable HTTPIE_COLORS. Konfigurieren Sie Farben für URL, Header, JSON und Statuscodes. Integrierte Themes sind verfügbar: autumn, borland, fruity, monokai, native, tango für verschiedene Terminals.
Für die programmatische Verarbeitung verwenden Sie --body --pretty=none, das rohes JSON zurückgibt. Kompakte Ausgabe ist nützlich zum Weitergeben an jq, sed und andere Parser bei der Automatisierung von API-Tests in Skripten.
Httpie unterstützt mehrere Ausgabeformate über das Flag --print: H (Anforderungs-Header), B (Anforderungstext), h (Antwort-Header), b (Antworttext). Die Kombination --print=hb gibt nur die Antwort-Header und den Text aus, ohne Meta-Informationen zur Verbindung. Das Flag --pretty=all aktiviert die farbige Formatierung mit Einrückungen für die Lesbarkeit.
Httpie unterstützt die Farbanpassung über die Umgebungsvariable HTTPIE_COLORS. Sie können Farben für URL, Header, JSON-Schlüssel und Antwort-Statuscodes konfigurieren. Integrierte Themes sind verfügbar: autumn, borland, fruity, monokai, native und tango für verschiedene Terminaltypen und persönliche Vorlieben.
Für die programmatische Verarbeitung der Ausgabe verwenden Sie die Flag-Kombination --body --pretty=none, die rohes JSON ohne Farben und Einrückungen zurückgibt. Kompakte Ausgabe ist nützlich zum Weitergeben an jq, sed und andere Konsolen-Parser bei der Automatisierung von REST-API-Tests in Shell-Skripten.
Häufig gestellte Fragen
Httpie bietet eine besser lesbare Syntax ohne Flags für grundlegende Operationen, automatische JSON-Serialisierung, farbige Hervorhebung der Antwort und integrierte Sitzungsunterstützung. cURL bleibt für Low-Level-Operationen unverzichtbar: Arbeit mit FTP, SMTP und nicht standardmäßigen Protokollen.
Verwenden Sie das Flag -f (oder --form): http -f POST example.com name=John file@~/photo.jpg. Httpie setzt automatisch Content-Type: multipart/form-data. Ohne das Flag -f werden die Daten als application/json gesendet.
Ja, Httpie unterstützt HTTPS. Für selbstsignierte Zertifikate verwenden Sie das Flag --verify=no. Zum Angeben einer benutzerdefinierten CA-Datei: --verify=/path/to/cert.pem. Die Zertifikatsprüfung ist standardmäßig aktiviert.
Nein, Httpie unterstützt kein WebSocket und ist ausschließlich für das HTTP/HTTPS-Protokoll gedacht. Verwenden Sie für WebSocket websocat oder wscat. Httpie konzentriert sich auf REST, GraphQL und Dateioperationen.
Verwenden Sie das Flag -d (download): http -d GET https://example.com/file.zip. Httpie speichert die Datei mit dem ursprünglichen Namen aus dem Content-Disposition-Header oder der URL. Für einen benutzerdefinierten Namen geben Sie -o output.zip an.
Zusammenfassung
http [method] URL [key=value] [Header:value] erfordert für die meisten Anfragen keine Flags.Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch