Httpie: Was ist das, ein HTTP-Client für die Kommandozeile

Autor: IT Sectr Veröffentlicht: 2026-05-08 Lesezeit: 8 Min.

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 ist ein moderner Ersatz für cURL mit lesbarer Syntax, farbiger Hervorhebung und integrierter JSON-Serialisierung.
  • Die Syntax der Anfrage folgt dem Schema: http [method] URL [header:value] [key=value] ohne zusätzliche Flags.
  • JSON standardmäßig — der Anforderungstext wird als JSON-Objekt behandelt und der Content-Type-Header automatisch gesetzt.
  • Sitzungen speichern Cookies und Header zwischen Anfragen, was zum Testen authentifizierter Endpunkte praktisch ist.
  • Plugins erweitern Httpie um Unterstützung für zusätzliche Formate, Authentifizierungstypen und benutzerdefinierte Transporte.

Was ist Httpie und wie unterscheidet es sich von cURL

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.

Vergleich von cURL und Httpie

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.

OperationcURLHttpie
GET-Anfragecurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
Headercurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Anfragesyntax in Httpie

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

Arten von Argumenten

  • Header:Value — Anforderungs-Header mit Doppelpunkt, ohne Leerzeichen nach dem Doppelpunkt: Authorization:"Bearer token".
  • key=value — JSON-Objektfelder im Anforderungstext: name=John age=30.
  • key:=value — Nicht-String-JSON-Werte (Zahlen, boolesche Werte, Arrays): active:=true tags:=["dev","test"].
  • key@file — Laden eines Werts aus einer Datei: 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.

bash
# 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"
}

Arbeiten mit JSON und Dateien

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.

Hochladen von Dateien und Binärdaten

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.

bash
# 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"

Verwaltung von Sitzungen und Cookies

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.

Beispiel für Sitzungstests

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.

bash
# 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

Authentifizierung und Header

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.

OAuth 2.0 und Bearer Token

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.

Verwendung von Httpie in CI/CD-Skripten

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.

Prüfung des Health-Endpunkts beim Deployment

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.

bash
# 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"

Erweiterte Funktionen und Plugins von Httpie

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.

Beliebte Httpie-Plugins

  • httpie-jwt-auth — automatisches Abrufen und Aktualisieren von JWT-Tokens über den Refresh-Token-Mechanismus.
  • httpie-oauth — Unterstützung von OAuth 2.0 Client Credentials und Authorization-Code-Flow mit automatischem Austausch des Codes gegen ein Token.
  • httpie-editor — öffnet den Anforderungstext vor dem Senden in einem Texteditor (vim, nano, VS Code).
  • httpie-image — zeigt Bilder aus der Antwort direkt im Terminal an (erfordert kitty oder iTerm2).

Skripterstellung und Ausgabeparsing

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.

bash
# 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

Ausgabeformate und Anpassung

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.

Benutzerdefinierte Farbschemata

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.

Ausgabe im JSON-Format

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.

Ausgabeformate und Anpassung der Darstellung

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.

Benutzerdefinierte Farbschemata

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.

Ausgabe im JSON-Format ohne Formatierung

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

Warum ist Httpie besser als das standardmäßige cURL?

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.

Wie sende ich form-data über Httpie?

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.

Unterstützt Httpie HTTPS und Zertifikate?

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.

Kann Httpie für WebSocket verwendet werden?

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.

Wie speichere ich eine Antwort über Httpie in einer Datei?

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

  • Httpie — ein Konsolen-HTTP-Client mit intuitiver Syntax, standardmäßig JSON und farbiger Ausgabe.
  • Grundsyntax http [method] URL [key=value] [Header:value] erfordert für die meisten Anfragen keine Flags.
  • JSON-Serialisierung ist automatisch: key=value wird zu einem JSON-Feld, key:=value für Zahlen und boolesche Werte.
  • Sitzungen speichern Cookies und Header zwischen Anfragen zum Testen authentifizierter Endpunkte.
  • Authentifizierung unterstützt Basic-, Digest-, Bearer- und benutzerdefinierte Schemata über das Flag --auth-type.
  • CI/CD-Integration mit --check-status und null Abhängigkeiten macht Httpie für Deployment-Skripte praktisch.
  • Datei-Upload über multipart form-data mit dem Flag -f und der key@file-Syntax.

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.

Projekt besprechen

Lesen Sie auch