Text & Dokumente
Zahlen & Berechnung
Daten & Formate
Sicherheit
Entwicklung & DevOps
Künstliche Intelligenz
Finanzen
Gesundheit & Wohlbefinden
Produktivität
Spiele & Unterhaltung
Multimedia & Design
Unternehmen
Bedienungsanleitung
Was es ist und was es NICHT ist

Eine Werkbank für HTTP-APIs, die komplett in deinem Browser läuft: kein Server, kein Konto, keine Erweiterung. Sie macht vier Dinge: sie sendet Anfragen und erklärt dir, warum sie fehlschlagen, wandelt Sammlungen zwischen Postman, Bruno, Insomnia, OpenAPI, HAR und curl um, erzeugt Code in elf Sprachen und vergleicht zwei Versionen einer API, um dir zu sagen, was dabei kaputtgeht.

Was sie NICHT ist: ein Ersatz für Postman oder Bruno. Eine Webseite kann weder localhost noch eine API ohne CORS-Header aufrufen — das ist keine Einschränkung dieses Tools, sondern wie Browser funktionieren. Für deine lokale API brauchst du einen Desktop-Client. Hier bekommst du dagegen, was die dir nicht geben können: wissen, was der Browser wirklich getan hat.

Die CORS-Forensik — was nur hier möglich ist

Wenn eine Anfrage an eine andere Domain fehlschlägt, sagt der Browser nur TypeError: Failed to fetch und sonst nichts. Mit dieser Meldung lässt sich nicht unterscheiden, ob „mein Server ist down“ oder „mein Server hat geantwortet, aber der Browser hat mir die Antwort verdeckt“ zutrifft — zwei Probleme mit entgegengesetzten Lösungen.

Dieses Tool trennt sie: schlägt die Anfrage fehl, schickt es eine zweite, opake Anfrage an dieselbe Adresse. Die schickt der Browser tatsächlich und lehnt sie nicht wegen CORS ab. Kommt sie durch, hat dein Server geantwortet und es fehlen nur Header. Kommt auch sie nicht durch, wurde der Server gar nicht erreicht und CORS hat damit nichts zu tun.

Postman und Bruno können das nicht: Sie sind Desktop-Programme, und CORS gilt für sie nicht.

Der Preflight — schon vor dem Senden angezeigt

Bei Methoden wie PUT, PATCH oder DELETE, bei einem Content-Type, der kein Formular-Typ ist, oder bei jedem eigenen Header schickt der Browser vorher eine OPTIONS-Anfrage, um um Erlaubnis zu fragen. Antwortet dein Server nicht darauf, wird die eigentliche Anfrage nie abgeschickt — selbst wenn deine API einwandfrei funktioniert.

Das Tool sagt es dir vorher, bevor du sendest, und zeigt dir, welches der drei Dinge die Ursache ist, weil die Lösung in jedem Fall anders aussieht.

Warum du nicht alle Antwort-Header siehst

Der Browser lässt dich nur sieben Header lesen (content-type, cache-control …). Die anderen sind da —du siehst sie im Netzwerk-Tab— aber JavaScript kann sie nicht anfassen, außer der Server veröffentlicht sie mit Access-Control-Expose-Headers.

Fehlt dir dein X-RateLimit-Remaining, ist das kein Fehler: genau das ist der Grund. Das Tool warnt dich, wenn nur die sieben ankommen.

Beim Senden ist es dasselbe: Es gibt Header, die der Browser nicht setzen lässt (Host, Origin, Cookie, User-Agent …). Sie werden verworfen, und dir wird gesagt, welche — statt so zu tun, als wären sie gesendet worden.

Sammlungen umwandeln (und warum offline wichtig ist)

Füge einen Export aus Postman, Insomnia, eine HAR-Datei aus dem Browser, eine OpenAPI-Spezifikation (JSON oder YAML), eine .bru-Datei von Bruno oder ein paar curl-Befehle ein oder zieh sie hinein: Das Format wird von selbst erkannt. Heraus kommt eine Bruno-Sammlung (ein .zip mit ihrem Ordnerbaum), eine Postman-Sammlung oder curl-Befehle.

Warum hier und nicht in irgendeinem Web-Konverter: Eine exportierte Sammlung trägt deine Tokens in sich. Es ist genau die Datei, die du nicht auf einen fremden Server hochladen solltest, um sie umzuwandeln. Hier verlässt sie nie den Browser — und das Tool listet dir die Zugangsdaten auf, die es findet, maskiert, damit du weißt, was du gerade teilen willst.

Was sich nicht umwandeln lässt, wird gesagt, nicht verschwiegen

Die Skripte von Postman (pm.test, pm.environment) und die von Bruno sind Code gegen eine Laufzeitumgebung, die es hier nicht gibt: Sie werden nicht übersetzt. Dateifelder speichern den Festplattenpfad von wer auch immer exportiert hat, nicht den Inhalt. Insomnia-Vorlagen haben nur innerhalb von Insomnia einen Sinn.

All das erscheint als Hinweis beim Importieren. Eine Migration, die deine Skripte verschluckt, ohne es zu erwähnen, ist die Art, von der du erst in der Produktion erfährst.

Code generieren

Die Anfrage, die du gerade zusammengestellt hast, fertig zum Einfügen in elf Zielen: cURL, fetch, axios, Python (requests), HTTPie, Go, Java, C#, PHP, PowerShell und Rust.

Das sind keine anschaulichen Beispiele: Sie kommen mit ihren import-Zeilen, mit den Escapes jeder Sprache —ein Apostroph im Body zerlegt dir nicht den Befehl— und mit den Details, die aus Gewohnheit falsch gemacht werden (in C# gehört Content-Type zum Inhalt und nicht zu den Headern; in Go kompiliert ein ungenutzter import nicht).

Was zwischen zwei Versionen deiner API kaputtgeht

Füge zwei OpenAPI-Spezifikationen ein, und es sagt dir, was sich geändert hat und welche dieser Änderungen einen bereits bestehenden Client kaputtmachen. Das ist die eigentliche Frage vor dem Deployen, und genau die beantwortet ein bunter Diff nicht.

Paare, die in einem Diff gleich aussehen und das Gegenteil bedeuten: einen optionalen Parameter hinzuzufügen bricht nichts, einen pflichtigen hinzuzufügen schon; einer Liste einen Wert hinzuzufügen bricht nichts, ihn zu entfernen schon; einen Query-Parameter zu entfernen wird ignoriert, einen Pfad-Parameter zu entfernen ändert die URL.

Jeder Befund sagt warum, nicht nur was: Ein Urteil ohne Begründung zwingt dich, es einfach zu glauben, mit ihr kann man diskutieren. Der Bericht kommt als Markdown heraus, zum Einfügen in einen Pull Request.

Was deinen Browser verlässt, und wann

Umwandeln, Code generieren und Spezifikationen vergleichen schicken nichts irgendwohin: Das passiert komplett innerhalb deines Browsers.

Eine Anfrage zu senden verlässt ihn tatsächlich, klar: Sie geht an den Server, den du eingibst, mit deinen Headern und deinem Body. Beim ersten Mal wird dir genau gezeigt, was gesendet wird —Methode, Adresse, jeder Header und der Body— mit verdeckten, aber gezählten Zugangsdaten. Danach sagt dir der Hinweis neben dem Button weiterhin, an welchen Rechner jede Sendung geht.

Und um einen Fehler diagnostizieren zu können, wird eine zweite Anfrage an dieselbe Adresse geschickt, ohne Header und ohne die Antwort zu lesen, nur um herauszufinden, ob der Server erreichbar ist.

API-WerkbankSende Anfragen, konvertiere Sammlungen und vergleiche Versionen
API-WerkbankSende Anfragen und verstehe, warum sie fehlschlagen · Sammlungen umwandeln · Code generieren · Versionen vergleichen

Das verlässt deinen Browser. Geht an api.github.com. Envía la petición que has escrito al servidor que has puesto en la URL.

Header