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/users

http POST <url> — Sendet einen POST-Request.

http POST https://api.example.com/users

http PUT <url> — Sendet einen PUT-Request.

http PUT https://api.example.com/users/1

http DELETE <url> — Sendet einen DELETE-Request.

http DELETE https://api.example.com/users/1

http PATCH <url> — Sendet einen PATCH-Request.

http PATCH https://api.example.com/users/1

http HEAD <url> — Sendet einen HEAD-Request (nur Header).

http HEAD https://example.com

Daten & JSON

http POST <url> <key>=<value> — Sendet JSON-Daten (Zeichenketten-Werte).

http POST https://api.example.com/users name=John email=john@example.com

http POST <url> <key>:=<value> — Sendet rohe JSON-Werte (Zahlen, Booleans, Arrays).

http POST https://api.example.com/users name=John age:=30 active:=true

http POST <url> < <file> — Sendet den Request-Body aus einer Datei.

http POST https://api.example.com/users < data.json

http --json POST <url> <key>=<value> — Sendet explizit als JSON (Standard für Daten).

http --json POST https://api.example.com/users name=John

http --form POST <url> <key>=<value> — Sendet als Formulardaten (application/x-www-form-urlencoded).

http --form POST https://example.com/login user=admin password=secret

http --multipart POST <url> file@<path> — Lädt eine Datei hoch (Multipart-Formulardaten).

http --multipart POST https://api.example.com/upload file@photo.jpg

Header & Authentifizierung

http <url> <Header>:<value> — Setzt einen eigenen Header.

http https://api.example.com/data Accept:application/xml X-API-Key:abc123

http -a <user>:<pass> <url> — HTTP-Basic-Authentifizierung.

http -a admin:secret https://api.example.com/admin

http -A bearer -a <token> <url> — Bearer-Token-Authentifizierung.

http -A bearer -a eyJhbG... https://api.example.com/me

http <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/users

http -h <url> — Zeigt nur die Antwort-Header.

http -h https://example.com

http -b <url> — Zeigt nur den Antwort-Body.

http -b https://api.example.com/users

http -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/users

http -d <url> — Download-Modus: speichert den Antwort-Body in einer Datei.

http -d https://example.com/file.zip

http -o <file> <url> — Speichert den Antwort-Body in einer bestimmten Datei.

http -o data.json https://api.example.com/export

Sessions & Konfiguration

http --session=<name> <url> — Verwendet eine benannte Session (speichert Cookies, Auth, Header).

http --session=mysession -a admin:secret https://api.example.com/login

http --session=<name> <url> — Setzt eine Session fort (Cookies/Auth aus vorherigem Request).

http --session=mysession https://api.example.com/dashboard

http --follow <url> — Folgt Weiterleitungen (standardmäßig nicht aktiv).

http --follow https://example.com/old-page

http --verify=no <url> — Überspringt die SSL-Zertifikatsprüfung.

http --verify=no https://self-signed.example.com

http --timeout=<seconds> <url> — Setzt das Request-Timeout.

http --timeout=30 https://slow-api.example.com

Häufige Muster

http --pretty=all <url> — Erzwingt farbige und formatierte Ausgabe.

http --pretty=all https://api.example.com/users

http --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=John

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

Verwandte Kommandos

  • curl – HTTP-Requests auf der Kommandozeile, auf praktisch jedem System vorinstalliert
  • wget – Dateien und ganze Sites herunterladen
  • ab – HTTP-Server mit Anfragen belasten (Apache Benchmark)