Wenn Sie jemals einen HTTP-Client testen mussten, ohne ein echtes Backend aufzusetzen, sind Sie wahrscheinlich auf httpbin gestoßen. Es ist ein winziger Webdienst, der Ihre Anfrage an Sie zurückspiegelt, sodass Sie genau sehen können, was Ihr Code gesendet hat. Das macht es perfekt zum Debuggen von Headern, zum Überprüfen, wie Ihr Client einen 500er-Fehler behandelt, oder zur Bestätigung, dass Ihr Auth-Token tatsächlich in der Anfrage enthalten war. Sie können jedes Tool darauf richten, von einem einfachen curl-Befehl bis zu einem vollständigen Client wie Apidog. Das Projekt befindet sich unter httpbin.org und ist Open Source unter einer ISC-Lizenz.
Was ist httpbin?
httpbin ist ein HTTP-Anforderungs- und -Antwortdienst. Sie senden eine Anfrage; er sendet eine JSON-Beschreibung dieser Anfrage zurück. Nichts weiter. Es wurde von Kenneth Reitz, dem Entwickler der beliebten Python-Bibliothek requests, erstellt und ist in Python mit Flask geschrieben.
Sein Wert liegt in seiner Einfachheit. Nehmen wir an, Sie möchten wissen, ob Ihr HTTP-Client einen User-Agent-Header korrekt setzt. Sie rufen https://httpbin.org/headers auf, und die Antwort listet jeden Header auf, den der Server empfangen hat. Keine Datenbank, kein Login, keine Einrichtung. Sie erhalten eine saubere Spiegelung Ihrer eigenen Anfrage.
httpbin.org ist die öffentliche Instanz und praktisch für schnelle Überprüfungen. Sie kann jedoch auch langsam oder kurzzeitig nicht verfügbar sein, da es sich um einen kostenlosen, gemeinsam genutzten Dienst handelt. Die Wartung hat sich im Laufe der Jahre verschoben; der Code befindet sich jetzt im GitHub-Repository postmanlabs/httpbin, wobei auch Community-Forks wie der von Kong existieren. Für alles, was Sie oft ausführen, ist das Selbst-Hosten die sicherere Wahl. Mehr dazu weiter unten.
Wichtige httpbin-Endpunkte
httpbin stellt eine Reihe von Endpunkten bereit, die jeweils auf eine bestimmte Art von Test abzielen. Hier sind die, die Sie am häufigsten verwenden werden.
| Endpunkt | Was es tut |
|---|---|
/get |
Gibt die Abfrageparameter, Header und die Ursprungs-IP einer GET-Anfrage zurück |
/post |
Gibt die Formulardaten, den JSON-Body und die Header zurück, die Sie POSTen |
/put, /patch, /delete |
Gleiches Prinzip für andere HTTP-Methoden |
/status/{codes} |
Gibt den angeforderten Statuscode zurück, z.B. /status/404 oder /status/503 |
/headers |
Gibt nur die Anfrage-Header zurück, die der Server gesehen hat |
/ip |
Gibt Ihre Ursprungs-IP-Adresse zurück |
/user-agent |
Gibt die User-Agent-Zeichenfolge zurück, die Ihr Client gesendet hat |
/delay/{n} |
Wartet n Sekunden vor der Antwort (bis zu 10), für Timeout-Tests |
/basic-auth/{user}/{passwd} |
Gibt 200 zurück, nur wenn Sie passende Basic Auth-Anmeldeinformationen senden |
/bearer |
Überprüft einen Bearer-Token im Authorization-Header |
/redirect/{n} |
Leitet Sie durch n Weiterleitungen, zum Testen der Weiterleitungsbehandlung |
/cookies |
Gibt die Cookies zurück, die Ihr Client gesendet hat |
/uuid |
Gibt eine zufällige UUID zurück |
/anything |
Spiegelt alles über die Anfrage zurück, unabhängig von der verwendeten Methode |
Die Endpunkte /status/{codes} und /delay/{n} sind hier die stillen Helden. Sie ermöglichen es Ihnen, Fehlerpfade und langsame Antworten nach Bedarf zu erzwingen, was bei einer echten API schwer auszulösen ist. Wenn Sie gefälschte Antworttexte anstelle von Echos generieren möchten, kombinieren Sie httpbin mit einer gefälschten API für Testdaten.
Wie man httpbin zum Testen eines Clients verwendet
Der schnellste Weg, httpbin auszuprobieren, ist mit curl. Senden Sie eine GET-Anfrage mit einem Abfrageparameter:
curl "https://httpbin.org/get?tool=apidog&check=headers"
Sie erhalten ein JSON-Objekt zurück, das die args, die vom Server empfangenen headers und Ihre origin-IP anzeigt. Dies bestätigt, dass Ihr Client gesendet hat, was Sie erwartet haben.
Um zu testen, wie Ihr Code einen POST-Body verarbeitet, senden Sie etwas JSON:
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
httpbin spiegelt das geparste json, die rohen data und die Header zurück, sodass Sie überprüfen können, ob Ihr Content-Type und Ihre Nutzdaten intakt durchgekommen sind.
Erzwingen Sie nun einen Fehler, um Ihre Wiederholungslogik zu testen:
curl -i "https://httpbin.org/status/503"
Sie erhalten eine echte 503 Service Unavailable-Antwort. Richten Sie die Fehlerbehandlung Ihres Clients darauf aus und bestätigen Sie, dass dieser entweder wiederholt oder elegant fehlschlägt. Ersetzen Sie dies durch /delay/5, um einen langsamen Endpunkt zu simulieren und Ihre Timeout-Einstellungen zu überprüfen.
Sie müssen nicht im Terminal bleiben. Jeder REST-Client kann diese URLs aufrufen. Wenn Sie einen grafischen Workflow bevorzugen, fügen Sie https://httpbin.org/get in Apidog ein, senden Sie die Anfrage und überprüfen Sie die Antwort mit Syntax-Hervorhebung, gespeichertem Verlauf und Umgebungsvariablen. Das ist praktisch, wenn Sie Antworten über verschiedene Umgebungen hinweg vergleichen oder einen Test mit einem Teamkollegen teilen möchten. Für eine Terminal-zentrierte Einrichtung sehen Sie sich diese TUI REST API Clients an.
httpbin selbst mit Docker hosten
Die öffentliche httpbin.org-Instanz ist für einmalige Überprüfungen in Ordnung, kann aber bei Bedarf ratenbegrenzt oder nicht verfügbar sein. Wenn Sie Ihre eigene Kopie betreiben, behebt dies das Problem und hält Ihren Testverkehr privat. Das offizielle Docker-Image macht dies zu einer Zwei-Befehls-Aufgabe.
Ziehen Sie das Image und führen Sie es aus:
docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Der Dienst lauscht nun auf Port 80. Rufen Sie ihn unter http://localhost/get auf und Sie erhalten das gleiche Verhalten wie auf der öffentlichen Website, ohne Netzwerklatenz und ohne gemeinsame Ratenbegrenzungen. Dies ist die Einrichtung, die Sie in CI-Pipelines wünschen, wo Zuverlässigkeit wichtig ist und Sie nicht von einem externen Dienst abhängen möchten. Das Image wird auf Docker Hub als kennethreitz/httpbin veröffentlicht.
Wenn Port 80 auf Ihrem Rechner belegt ist, ordnen Sie einen anderen Host-Port zu, z.B. docker run -p 8080:80 kennethreitz/httpbin, und verwenden Sie dann http://localhost:8080/get.
httpbin-Alternativen
httpbin macht eine Sache gut, aber es ist nicht die einzige Option und keine vollständige Testplattform. Hier sind ehrliche Alternativen, je nachdem, was Sie benötigen.
Postman Echo. Ein gehosteter Echo-Dienst im Geiste von httpbin, betrieben von Postman. Sie rufen https://postman-echo.com/get auf und erhalten Ihre Anfrage gespiegelt zurück. Er deckt GET, POST, Authentifizierung und Utility-Endpunkte ab. Die vollständige Liste finden Sie in den Postman Echo-Dokumenten. Wenn httpbin.org nicht erreichbar ist, ist Echo eine solide Alternative.
Selbst gehostetes httpbin. Wie oben gezeigt, erhalten Sie durch das Ausführen des Docker-Images genau dieselben Endpunkte mit voller Kontrolle und ohne gemeinsame Beschränkungen. Dies ist die beste Wahl, wenn Sie httpbin-Verhalten in einem privaten Netzwerk oder einem CI-Job benötigen.
Mock-Dienste. httpbin spiegelt Ihre Anfrage wider; es liefert keine realistischen Domänendaten. Wenn Sie gefälschte, aber strukturierte Antworten (eine Liste von Benutzern, ein Bestellobjekt, paginierte Ergebnisse) benötigen, greifen Sie stattdessen zu einem Mock-Server. Apidog verfügt über ein integriertes intelligentes Mocking, das realistische Antworten aus Ihrem Schema generiert, sodass Ihr Frontend bereits vor Existenz des Backends gegen einen Endpunkt entwickeln kann.
Apidog als Client- und Testschicht. httpbin ist ein Ziel, an das Sie Anfragen senden. Apidog ist das Werkzeug, mit dem Sie sie senden. Es ist ein vollständiger API-Client und eine Testplattform: Endpunkte entwerfen, Anfragen senden, Assertions schreiben, Anfragen zu Szenarien verketten und diese in CI ausführen. Sie würden Apidog verwenden, um httpbin aufzurufen, oder um es zu ersetzen, sobald Ihre Anforderungen über ein einfaches Echo hinauswachsen. Die beiden sind nicht gleichwertig; httpbin ist der winzige Dienst, Apidog ist die Werkbank darum herum. Wenn Sie bereit sind, von Ad-hoc-Curl-Aufrufen zu gespeicherten, wiederholbaren Tests überzugehen, können Sie mit Apidog Ihre vorhandenen Anfragen importieren und Assertions hinzufügen. Für eine breitere Übersicht über installationsfreie Optionen sehen Sie sich diese kostenlosen Online-API-Testwerkzeuge an.
FAQ
Ist httpbin kostenlos nutzbar? Ja. Die öffentliche httpbin.org-Instanz ist kostenlos und erfordert kein Konto. Der Quellcode ist unter einer ISC-Lizenz Open Source, sodass Sie ihn auch kostenfrei selbst betreiben können.
Wird httpbin noch gewartet? Die Codebasis befindet sich im postmanlabs/httpbin GitHub-Repository und erhält weiterhin Aufmerksamkeit, obwohl die Wartung sporadisch war. Da httpbin.org unzuverlässig sein kann, verwenden viele Teams eine selbst gehostete Docker-Kopie für wichtige Dinge.
Kann ich httpbin zum Testen von Webhooks verwenden? Nicht wirklich. httpbin spiegelt Anfragen wider, die Sie an es senden, aber es empfängt kein Ereignis von einem Drittanbieter und leitet es an Ihren lokalen Rechner weiter. Dafür verwenden Sie einen dedizierten Tunneling- oder Inspektionsdienst; siehe diesen Leitfaden zum Testen von localhost APIs und Webhooks und diese Einführung zum Thema wie Webhooks funktionieren.
Was ist der Unterschied zwischen httpbin und Postman Echo? Sie tun nahezu dasselbe: Ihre HTTP-Anfrage als JSON zurückspiegeln. httpbin ist der ursprüngliche Open-Source-Dienst in Python und Flask; Postman Echo ist ein gehosteter Dienst von Postman. Wählen Sie den, der verfügbar und erreichbar ist.
Kann ich die Fehlerbehandlung mit httpbin testen? Ja. Verwenden Sie /status/{code}, um jeden Statuscode zu erzwingen, z.B. /status/500 oder /status/429, und /delay/{n}, um langsame Antworten zu simulieren. Dies ist der sauberste Weg, die Wiederholungs- und Timeout-Logik Ihres Clients zu testen.
Zusammenfassung
httpbin ist ein kleines, präzises Werkzeug: Richten Sie einen HTTP-Client darauf und sehen Sie Ihre Anfrage gespiegelt zurück. Verwenden Sie /get und /post, um zu bestätigen, was Sie senden, /status und /delay, um Fehlerpfade zu erzwingen, und das Docker-Image, um eine private Kopie in CI auszuführen. Wenn Sie mehr als ein Echo benötigen, greifen Sie zu realistischen Mocks, gespeicherten Testsuiten und Assertions.
Hier zahlt sich eine vollständige Plattform aus. Apidog bietet Ihnen einen API-Client, um httpbin anzusteuern, intelligentes Mocking, um es zu ersetzen, und automatisierte Tests, um das gerade verifizierte Verhalten zu sichern. Laden Sie Apidog herunter und verwandeln Sie Ihre schnellen httpbin-Überprüfungen in wiederholbare Tests.
