Werkzeuge
Leitfäden

curl-Konverter

Dev

Wandeln Sie einen curl-Befehl in JavaScript fetch, axios, Python, Go, Java und HTTPie um – live, mit mehrsprachigen Tabs.

100 % clientseitig Ohne Backend

Remote-URLs werden nicht abgerufen; fügen Sie Ihr JSON direkt ein.

Eingabe
Fügen Sie einen curl-Befehl ein, um den konvertierten Code zu sehen.
Auf dieser Seite

Was ist ein curl-Konverter?#

curl ist das Ding, das HTTP am nächsten als universelle Sprache hat. Jedes Browser-DevTools-Panel, jede API-Dokuseite und jedes Support-Ticket landet irgendwann bei einem curl-Befehl — „Als cURL kopieren“ ist die Art, wie eine Anfrage aus dem Browser in einen Bugbericht wandert. Das Problem ist, dass ein eingefügter curl-Befehl selten das ist, was Sie in Ihrer Codebasis tatsächlich ausführen können. Ihr Service ist in Python geschrieben, oder Go, oder browserseitig in fetch; Sie wollen nicht per Shell an curl delegieren, sondern den äquivalenten Aufruf in dem HTTP-Client, den Sie ohnehin verwenden.

Diese Seite schlägt diese Brücke. Fügen Sie links einen curl-Befehl ein, und sie parst die Shell-Syntax — Flags, Anführungszeichen, Zeilenfortsetzungen, Header, Body, Auth — in eine strukturierte Anfrage und emitriert dann den äquivalenten Code für sechs Ziele gleichzeitig: Browser-fetch, axios, Python requests, Go net/http, Java HttpURLConnection und httpie. Sie lesen über die Tabs hinweg, kopieren den, der zu Ihrem Stack passt, und machen weiter.

Das Parsen läuft vollständig in Ihrem Browser. Der Befehl, den Sie einfügen, berührt nie einen Server, was zählt, weil echte curl-Befehle häufig Bearer-Tokens, Basic-Auth-Credentials oder signierte Cookies enthalten.

So wird es verwendet#

  1. Fügen Sie Ihren curl-Befehl in das Eingabe-Feld links ein. Sie können das führende Wort curl einfügen oder weglassen; beides funktioniert. Mehrzeilige Befehle, die mit einem abschließenden \ verknüpft sind, werden ebenso verstanden wie Befehle, die direkt aus einem Terminal kopiert wurden, wo jedes Flag auf eigener Zeile steht.
  2. Klicken Sie auf Beispiel, um ein realistisches Beispiel zu laden, falls Sie zuerst die Form sehen wollen, oder auf Leeren, um das Feld zu wischen.
  3. Wählen Sie eine Zielsprache aus der Tab-Leiste über der Ausgabe: fetch, axios, Python, Go, Java oder HTTPie. Alle sechs werden aus demselben Parse erzeugt, sodass das Umschalten der Tabs sofort geschieht — es gibt kein Neu-Laufen.
  4. Lesen Sie den erzeugten Code im Panel. Verwenden Sie Kopieren in der Tab-Leiste, um ihn zu übernehmen.
  5. Beachten Sie die Statusleiste unter den Feldern. Falls der Parser auf ein Flag stieß, das es nicht modelliert (eine Ausgabedatei-Umleitung, eine Proxy-Einstellung), sagt es das explizit, anstatt es stillschweigend fallen zu lassen.

Die wichtigsten Funktionen#

  • Ein echter Shell-Tokenizer, kein Regex-Scrape. Einfache Anführungszeichen, doppelte Anführungszeichen, ANSI-C-$'...'-Quoting (mit \n, \t, \x41, é-Escapes), Backslash-Newline-Zeilenfortsetzung und der Unterschied zwischen "a\b" und 'a\b' werden so gehandhabt, wie bash es täte. Naive Konverter, die an Leerzeichen splitten, brechen in dem Moment ein, in dem ein Header-Wert ein Leerzeichen enthält.
  • Sechs Ziele aus einem Parse. Sie sehen fetch, axios, Python, Go, Java und httpie Seite an Seite. Falls Sie unsicher sind, ob Sie zu fetch oder axios greifen sollen, können Sie den Umgang mit demselben Auth-Header in zwei Klicks vergleichen.
  • Body-Intelligenz. Wenn die Anfrage Content-Type: application/json trägt, übergibt der Python-Emitter sie als Schlüsselwort json=, sodass ein dict-förmiger Body korrekt gesendet wird; andernfalls fällt er auf data= zurück.
  • Basic Auth einmal dekodiert. Ein Flag -u user:pass wird zu btoa("user:pass") in fetch, zum auth-Block in axios, zum auth=-Tupel in requests und zu SetBasicAuth in Go — jede Idiom so, wie es diese Sprache erwartet.
  • Unbekannte Flags werden gemeldet, nicht verschluckt. -o output.txt oder --proxy werden in der Statusleiste als unknown args ausgewiesen, sodass Sie nie stillschweigend in die falsche Annahme gelangen, eine Konvertierung habe eine Umleitung oder einen Proxy erfasst, die sie eigentlich fallen ließ.
  • Kein Backend, keine Lecks. Der Befehl wird im Speicher vom Skript der Seite selbst tokenisiert. Es gibt keinen Netzwerkaufruf, der Ihr eingefügtes Token irgendwohin transportiert.

Anwendungsbeispiel#

Laden Sie Beispiel (oder fügen Sie das Äquivalent von dem ein, was Browser-DevTools erzeugen, wenn Sie für einen JSON-POST auf „Als cURL kopieren“ klicken):

curl -X POST https://example.com/api/v1/users \
  -H 'Authorization: Bearer tok' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Alice","role":"admin"}'

Wechseln Sie auf den Tab fetch und Sie erhalten:

const response = await fetch("https://example.com/api/v1/users", {
  method: "POST",
  headers: {
    "Authorization": "Bearer tok",
    "Content-Type": "application/json",
  },
  body: "{\"name\":\"Alice\",\"role\":\"admin\"}",
});

Wechseln Sie auf den Tab Python. Weil Content-Type JSON ist, geht der Body über das Schlüsselwort json=:

import requests

url = 'https://example.com/api/v1/users'
headers = {
    'Authorization': 'Bearer tok',
    'Content-Type': 'application/json',
}
payload = '{"name":"Alice","role":"admin"}'
response = requests.request('POST', url, headers=headers, json=payload)
print(response.status_code)

Derselbe Befehl ist auch sofort unter den Tabs Go, Java, axios und HTTPie verfügbar — sechs Konvertierungen zum Preis eines Einfügens.

FAQ#

Es steht „unknown args“ für meinen Befehl. Was hat es übersprungen?#

Der Parser modelliert die curl-Flags, die Sie verwenden, um eine Anfrage zu beschreiben — Methode, URL, Header, Body, Basic Auth, --compressed, -k, -L. Flags, die curls eigenes Verhalten beschreiben (wie -o, um den Body in eine Datei zu schreiben, --proxy, --connect-timeout, --cert), werden nicht übersetzt, weil sie kein Äquivalent in einem fetch-Aufruf haben. Sie werden gesammelt und in der Statusleile angezeigt, damit Sie wissen, dass sie bewusst fallen gelassen wurden, nicht verloren.

Kann ich einen Befehl konvertieren, der $'...'-ANSI-C-Quoting verwendet?#

Ja. Header und Bodies, die aus Terminals kopiert wurden, kommen manchmal in $'...' eingepackt an, damit Escape-Sequenzen wie \n oder \t von der Shell interpretiert werden. Der Tokenizer versteht ANSI-C-Quoting und dekodiert \n, \t, \xHH, \uHHHH, \UHHHHHHHH und die einfachen Escapes, sodass die Bytes, die der Konverter sieht, mit den Bytes übereinstimmen, die curl gesendet hätte.

Warum verwendet meine Python-Ausgabe manchmal json= und manchmal data=?#

Der Emitter betrachtet Ihre Header. Wenn Content-Type: application/json vorhanden ist, übergibt er den Body über das Schlüsselwort json=, was requests erlaubt, den Header zu setzen und die Nutzlast korrekt zu kodieren. Für jeden anderen Content-Typ (form-encoded, Klartext, Multipart) fällt er auf data= zurück, weil json= dort zu erzwingen falsch wäre.

Führt es die Anfrage für mich aus?#

Nein, und das ist Absicht. Dieses Werkzeug übersetzt den Befehl nur in Code; es führt ihn nie aus. Das erzeugte Snippet läuft in Ihrem eigenen Programm, unter Ihren eigenen Credentials, wo Sie es inspizieren können, bevor es live etwas tut.