HTTPie — Moderner HTTP-Client für die Kommandozeile
Praxis-Guide zu HTTPie — HTTP-Requests, JSON-Daten, Sessions und Authentifizierung auf der Kommandozeile, mit intuitiver Syntax und Beispielen für API-Testing.
HTTPie ist die moderne, benutzerfreundliche Alternative zu curl: Statt kryptischer Flags formulierst du HTTP-Requests in einer intuitiven Syntax, die sich fast wie natürliche Sprache liest. JSON-Daten sendest du ohne Extra-Header per key=value-Notation, die Ausgabe ist automatisch eingefärbt und formatiert. Ob schneller API-Test, Bearer-Token-Auth oder wiederverwendbare Sessions – HTTPie macht das, was curl kann, deutlich zugänglicher.
Grundlegende Anfragen
http <url> — Sendet einen GET-Request (Standard-Methode).
http https://api.example.com/usershttp POST <url> — Sendet einen POST-Request.
http POST https://api.example.com/usershttp PUT <url> — Sendet einen PUT-Request.
http PUT https://api.example.com/users/1http DELETE <url> — Sendet einen DELETE-Request.
http DELETE https://api.example.com/users/1http PATCH <url> — Sendet einen PATCH-Request.
http PATCH https://api.example.com/users/1http HEAD <url> — Sendet einen HEAD-Request (nur Header).
http HEAD https://example.comDaten & JSON
http POST <url> <key>=<value> — Sendet JSON-Daten (Zeichenketten-Werte).
http POST https://api.example.com/users name=John email=john@example.comhttp POST <url> <key>:=<value> — Sendet rohe JSON-Werte (Zahlen, Booleans, Arrays).
http POST https://api.example.com/users name=John age:=30 active:=truehttp POST <url> < <file> — Sendet den Request-Body aus einer Datei.
http POST https://api.example.com/users < data.jsonhttp --json POST <url> <key>=<value> — Sendet explizit als JSON (Standard für Daten).
http --json POST https://api.example.com/users name=Johnhttp --form POST <url> <key>=<value> — Sendet als Formulardaten (application/x-www-form-urlencoded).
http --form POST https://example.com/login user=admin password=secrethttp --multipart POST <url> file@<path> — Lädt eine Datei hoch (Multipart-Formulardaten).
http --multipart POST https://api.example.com/upload file@photo.jpgHeader & Authentifizierung
http <url> <Header>:<value> — Setzt einen eigenen Header.
http https://api.example.com/data Accept:application/xml X-API-Key:abc123http -a <user>:<pass> <url> — HTTP-Basic-Authentifizierung.
http -a admin:secret https://api.example.com/adminhttp -A bearer -a <token> <url> — Bearer-Token-Authentifizierung.
http -A bearer -a eyJhbG... https://api.example.com/mehttp <url> Authorization:'Bearer <token>' — Setzt den Authorization-Header manuell.
http https://api.example.com/me Authorization:'Bearer eyJhbG...'Ausgabesteuerung
http -v <url> — Ausführlich: zeigt Request-Header, -Body, Antwort-Header und -Body.
http -v https://api.example.com/usershttp -h <url> — Zeigt nur die Antwort-Header.
http -h https://example.comhttp -b <url> — Zeigt nur den Antwort-Body.
http -b https://api.example.com/usershttp -p HBhb <url> — Wählt Ausgabe-Teile aus: H=Request-Header, B=Request-Body, h=Antwort-Header, b=Antwort-Body.
http -p Hh https://api.example.com/usershttp -d <url> — Download-Modus: speichert den Antwort-Body in einer Datei.
http -d https://example.com/file.ziphttp -o <file> <url> — Speichert den Antwort-Body in einer bestimmten Datei.
http -o data.json https://api.example.com/exportSessions & Konfiguration
http --session=<name> <url> — Verwendet eine benannte Session (speichert Cookies, Auth, Header).
http --session=mysession -a admin:secret https://api.example.com/loginhttp --session=<name> <url> — Setzt eine Session fort (Cookies/Auth aus vorherigem Request).
http --session=mysession https://api.example.com/dashboardhttp --follow <url> — Folgt Weiterleitungen (standardmäßig nicht aktiv).
http --follow https://example.com/old-pagehttp --verify=no <url> — Überspringt die SSL-Zertifikatsprüfung.
http --verify=no https://self-signed.example.comhttp --timeout=<seconds> <url> — Setzt das Request-Timeout.
http --timeout=30 https://slow-api.example.comHäufige Muster
http --pretty=all <url> — Erzwingt farbige und formatierte Ausgabe.
http --pretty=all https://api.example.com/usershttp --print=b <url> | jq '<filter>' — Leitet die JSON-Antwort zur Verarbeitung an jq weiter.
http --print=b https://api.example.com/users | jq '.[].name'http --offline POST <url> <data> — Erstellt und zeigt den Request ohne Absenden (zum Debuggen).
http --offline POST https://api.example.com/users name=Johnhttps <url> — Kurzform für http mit HTTPS-Schema.
https api.example.com/users Fazit
HTTPie lohnt sich überall, wo du schnell und lesbar HTTP-Requests formulieren willst – vor allem beim API-Debugging und im Development-Workflow. Für Skripte oder Umgebungen, in denen curl bereits vorhanden ist, bleibt curl die sichere Wahl. Beide Werkzeuge ergänzen sich, und wer beide kennt, ist für jeden Anwendungsfall gerüstet.
Weiterführende Links
- HTTPie – offizielle Dokumentation – Referenz und Handbuch (englisch)
- HTTPie – GitHub – Quellcode und Releases (englisch)