cURL-Konverter
Konvertieren Sie cURL-Befehle in fetch-, axios- oder Python-Code
Einige Teile des Befehls wurden übersprungen:
Fügen Sie einen cURL-Befehl ein, und dieser Konverter parst ihn zu einer strukturierten Anfrage und schreibt diese Anfrage als ausführbaren Code in drei verschiedenen HTTP-Clients. Er ist für den Alltag gebaut: eine Anfrage aus den Chrome DevTools, einer API-Referenzseite oder einem Bug-Report kopieren und in Anwendungscode übernehmen, ohne Methode, Header und JSON-Maskierung von Hand zu übersetzen.
Was der Konverter tatsächlich ausgibt
Jede Konvertierung erzeugt genau drei Ausgaben, jede in einem eigenen Tab:
- JavaScript
fetch— die browsernative API mit einemheaders-Objekt und einembody-String. - JavaScript
axios— ein Konfigurationsobjekt mitmethod,url,headers, optionalemdataund optionalemauth. - Python
requests— einimport requests, optionaleheaders- unddata-Variablen, dann einrequests.request(...)-Aufruf.
Es gibt keine cURL-zu-Go-, Ruby-, PHP-, C#- oder HTTPie-Ausgabe und keine Gegenrichtung „Code zu cURL“. Alle drei Snippets entstehen im selben Durchlauf, ein Tab-Wechsel ist also sofort möglich und keine zweite Konvertierung nötig.
Jedes Ziel behält seine eigenen Idiome, statt eine generische Vorlage zu teilen. fetch lässt das method-Feld weg, wenn die Anfrage ein einfaches GET ist, und hängt eine .then(...)-Kette an; axios schreibt immer ein Konfigurationsobjekt und schreibt den Methodennamen klein; Python baut benannte headers- und data-Variablen vor dem Aufruf. Weil der Generator aus derselben geparsten Anfrage arbeitet, sind URL, Header-Namen und Body-String in allen drei Zielen identisch — nur die Syntax drumherum ändert sich.
Verwendung
Fügen Sie den vollständigen Befehl ein, beginnend mit curl. Der Tokenizer versteht Backslash-Zeilenfortsetzungen, einfach zitierte Strings und doppelt zitierte Strings mit maskierten Anführungszeichen, eine mehrzeilige DevTools-Kopie funktioniert also unverändert. Klicken Sie auf Konvertieren, und lesen Sie das Warnfeld, falls eines erscheint. Wechseln Sie die Tabs und kopieren Sie das benötigte Snippet. Parsen und Code-Erzeugung laufen beide in der Seite, der Befehl und enthaltene Zugangsdaten bleiben also auf Ihrem Gerät.
Der Konverter ist bewusst tolerant: Ein DevTools-Befehl über ein Dutzend Zeilen mit Tabs, abschließenden Backslashes und gemischten Anführungszeichen wird genau so geparst, wie der Browser ihn gesendet hat. Wirkt das Ergebnis falsch, ist die Warnliste die erste Anlaufstelle, denn sie nennt jedes Token, das der Parser nicht einordnen konnte. Über jedem Ausgabebereich liegen Kopieren-Schaltflächen, und der kopierte Text entspricht dem Sichtbaren, einschließlich der .then-Kette im fetch-Snippet.
Praxisbeispiel: Ein DevTools-Befehl, drei Ziele
Das mitgelieferte Beispiel ist eine typische „Als cURL kopieren“-Anfrage:
curl 'https://api.example.com/v1/users' \
-H 'accept: application/json' \
-H 'authorization: Bearer your-token-here' \
-H 'content-type: application/json' \
--data-raw '{"name":"Alice","role":"developer"}' \
--compressed
Der Parser leitet POST ab, weil ein Flag aus der -d-Familie vorhanden ist und kein -X es überstimmt. Die URL bleibt wie geschrieben, die drei Header bleiben in Reihenfolge, und der Body ist der exakte JSON-String. Eine Warnung wird gemeldet: Unknown flag: --compressed.
Für fetch sind die bemerkenswerten Teile ein method-Feld, ein headers-Objekt und body als zitierter JSON-String:
fetch("https://api.example.com/v1/users", {
method: "POST",
headers: { "accept": "application/json", "authorization": "Bearer your-token-here", "content-type": "application/json" },
body: "{\"name\":\"Alice\",\"role\":\"developer\"}",
});
Die axios-Version spiegelt dies mit method: "post", url, headers und data. Die Python-Version deklariert headers = {...}, data = '...' und ruft dann requests.request("POST", "https://api.example.com/v1/users", headers=headers, data=data) auf. In jedem Ziel ist der Body ein String, kein geparstes Objekt; der Konverter bewahrt die Payload wörtlich, statt sie neu zu interpretieren.
Unterstützte Flags und was durchfällt
| cURL-Flag | Wirkung auf die geparste Anfrage |
|---|---|
-X, --request | Setzt die HTTP-Methode, in Großbuchstaben |
-H, --header | Fügt einen Header hinzu, am ersten Doppelpunkt geteilt |
-d, --data, --data-raw, --data-binary, --data-ascii | Fügt zum Body hinzu; mehrere Teile mit & verbunden |
-u, --user | Erfasst Basic-Auth-Zugangsdaten |
-A, --user-agent | Fügt den User-Agent-Header hinzu oder ersetzt ihn |
-G, --get | Verschiebt die Daten in den Query-String und nutzt GET |
-I, --head | Nutzt HEAD |
--url | Liefert die URL explizit |
Alles, was nicht in dieser Tabelle steht — --compressed, --insecure, -k, -L, --max-time, Cookie-Jars, -F-Dateiuploads und so weiter — wird bewusst nicht konvertiert. Diese Flags werden in der Warnliste über der Ausgabe gesammelt, sodass Sie genau sehen, was übersprungen wurde, und den erzeugten Code trotzdem nutzen können. Ein Header ohne Doppelpunkt oder ein Wert-Flag ohne Argument erzeugt ebenfalls eine Warnung statt eines Fehlers. Der einzige harte Fehlschlag ist ein Befehl ohne erkennbare URL, der meldet, dass keine URL gefunden wurde.
Wie die Authentifizierung umgeschrieben wird
Zugangsdaten aus -u benutzer:passwort werden zum idiomatischen Mechanismus des jeweiligen Ziels. fetch erhält "Authorization": "Basic " + btoa("benutzer:passwort"); axios erhält auth: { username: "benutzer", password: "passwort" }; Python erhält auth=("benutzer", "passwort"). Enthält der Befehl bereits einen Authorization-Header, lässt der Generator ihn unangetastet und erzeugt keine Basic Auth obendrauf. Weil die Zugangsdaten in die Ausgabe geschrieben werden, sollte ein kopiertes Snippet, das -u verwendet hat, als sensibel behandelt werden.
Häufige Fehler und Einschränkungen
- Mehrere
-d-Teile werden mit&verkettet. Das passt meist zuapplication/x-www-form-urlencoded, reproduziert aber keinmultipart/form-datamit Dateiteilen. - Unbekannte Flags entfallen. Eine
--cookie-Sitzung, das Folgen von Redirects oder eine TLS-Umgehung werden im erzeugten Code nicht nachgebildet, selbst wenn die Anfrage gelingen mag. -Gändert die Bedeutung der Daten. Die verbundenen Daten wandern in den Query-String, und die Ausgabeanfrage hat gar keinen Body.- Die Methoden-Ableitung kann überraschen. Ein Befehl mit Body und ohne
-Xwird zuPOST; ergänzen Sie-X GEToder-G, wenn Sie eigentlich ein GET wollten. - Der Body ist immer ein String. Für ein sauberes Objektliteral fügen Sie die Ausgabe in Ihren Editor ein und ersetzen den maskierten String selbst.
Verwandte Tools
Häufig gestellte Fragen
Welche Ausgabesprachen kann ich erzeugen?
Genau drei: JavaScript fetch, JavaScript axios und Python requests. Es gibt keine cURL-zu-Go-, Ruby-, PHP-, C#- oder HTTPie-Ausgabe und keine Gegenrichtung, die Code in cURL verwandelt. Alle drei Snippets entstehen im selben Durchlauf, ein Tab-Wechsel erfordert also keine erneute Konvertierung.
Was passiert mit Flags wie --compressed, die der Konverter nicht kennt?
Sie werden in einer Warnliste über der Ausgabe gesammelt, statt die Konvertierung abzubrechen. Flags wie --compressed, --insecure, -k, -L, --max-time, Cookie-Jars und -F-Dateiuploads werden nicht übersetzt; die Warnungen sagen genau, was übersprungen wurde.
Wie werden mehrere -d- oder --data-Flags behandelt?
Jeder Wert wird an den Body angehängt, und die Teile werden mit einem Ampersand verbunden, was der Art entspricht, wie cURL wiederholte Daten-Flags sendet. Mit -G oder --get wird der verbundene String stattdessen als Query an die URL gehängt, und es wird kein Request-Body ausgegeben.
Wie wird -u benutzer:passwort umgewandelt?
Basic Auth wird für jedes Ziel idiomatisch: fetch erhält einen Authorization-Header, der mit btoa gebaut wird, axios erhält auth: { username, password }, und Python erhält auth=("benutzer", "passwort"). Enthält der Befehl bereits einen Authorization-Header, bleibt dieser erhalten und Basic Auth wird nicht zusätzlich erzeugt.
Wie wird die HTTP-Methode entschieden?
Ein explizites -X/--request gewinnt. Andernfalls bedeutet -I/--head HEAD, ein Daten-Flag ohne -G bedeutet POST, und alles Übrige ist GET. Ein Befehl mit Body und ohne -X wird also zu POST — die häufigste Überraschung.
Was ist der einzige Fehler, der eine Konvertierung stoppt?
Ein Befehl ohne erkennbare URL. Unbekannte Flags, fehlerhafte Header ohne Doppelpunkt und Wert-Flags ohne Argument erzeugen nur Warnungen; der generierte Code wird trotzdem erzeugt.
Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert