curl-Befehlsgenerator
Geben Sie HTTP-Methode, URL, Header, Body und Authentifizierungsmethode im Formular an, um einen sofort ausführbaren curl-Befehl zu erzeugen, den Sie kopieren können. Da nie tatsächlich eine Anfrage gesendet wird, gelten keine CORS-Beschränkungen.
Häufig verwendete curl-Optionen
| Option | Beschreibung |
|---|---|
| -X, --request <method> | Gibt die HTTP-Methode an (GET, POST, PUT, PATCH, DELETE usw.). Wird sie weggelassen, gilt GET ohne Body bzw. POST mit Body. |
| -H, --header <header> | Fügt einen Anfrage-Header hinzu. Für mehrere Header -H wiederholt angeben. |
| -d, --data <data> | Sendet einen Anfragetext. Wird -X nicht angegeben, erfolgt der Versand automatisch als POST mit Content-Type: application/x-www-form-urlencoded. |
| -u, --user <user:password> | Gibt Benutzername und Passwort für die Basic-Authentifizierung im Format "user:password" an. |
| -k, --insecure | Überspringt die SSL-Zertifikatsprüfung. Gedacht für Entwicklungsumgebungen mit selbstsignierten Zertifikaten. In der Produktion nicht empfohlen. |
| -L, --location | Folgt automatisch dem im Location-Header angegebenen Ziel, wenn der Server eine 3xx-Weiterleitung zurückgibt. |
| -v, --verbose | Zeigt den detaillierten Ablauf von Anfrage und Antwort einschließlich Header auf der Standardfehlerausgabe an. Hilfreich zum Debuggen. |
| --compressed | Fügt einen Accept-Encoding-Header hinzu und fordert damit komprimierte Antworten (z. B. gzip) an, die automatisch dekomprimiert werden. |
| -o, --output <file> | Speichert den Antworttext in der angegebenen Datei statt in der Standardausgabe. |
| -F, --form <name=content> | Sendet Formulardaten oder Dateien im Format multipart/form-data. Für Datei-Uploads "@Dateipfad" angeben. |
Einen curl-Befehl aus einem Formular zusammensetzen
Geben Sie im Formular Methode, Adresse, Kopfzeilen, Rumpf und Anmeldung an, und heraus kommt ein curl-Befehl, fertig zum Einfügen in ein Terminal. **Dieses Werkzeug sendet die Anfrage niemals wirklich, weshalb es nicht an die CORS-Beschränkungen des Browsers gebunden ist:** Der Befehl lässt sich auch für eine Schnittstelle zusammensetzen, die eine Anfrage von einer Seite aus abweisen würde.
**Woran man bei curl stolpert, ist das Verhältnis von Methode und Rumpf.** Hängen Sie mit `-d` einen Rumpf an, so **wird die Methode selbsttätig zu POST, auch wenn Sie keine geschrieben haben.** Wer ein PUT oder PATCH senden will und nur `-d` angibt, schickt daher ein ungewolltes POST los. Der zweite häufige Fehler ist, JSON zu senden und `Content-Type: application/json` zu vergessen; curl sendet es dann als `application/x-www-form-urlencoded`, und **der Server liest es überhaupt nicht als JSON.** Achten Sie beim Einfügen des erzeugten Befehls auch auf die Anführungszeichen der Shell: **in einfachen Anführungszeichen werden Variablen nicht ersetzt, in doppelten schon.**
So gehen Sie vor
- Geben Sie Methode und Adresse an Wählen Sie GET zum Abrufen und POST zum Senden.
- Fügen Sie Ihre Kopfzeilen hinzu **Senden Sie JSON, so vergessen Sie `Content-Type: application/json` nicht.**
- Schreiben Sie den Rumpf **Ein angehängter Rumpf macht die Methode selbsttätig zu POST, wo keine angegeben war.**
- Kopieren Sie den Befehl und führen Sie ihn aus Ihn in ein Terminal einzufügen genügt.
Tipps für die Nutzung
- Der generierte Befehl kann direkt in ein Terminal, ein Shell-Skript oder eine CI/CD-Konfigurationsdatei eingefügt und so ausgeführt werden. Alle Werte sind bereits mit einfachen Anführungszeichen escaped.
- Es erscheint eine Warnung, wenn Sie einen Body eingeben, während die Methode noch GET ist. Der Grund: curl sendet die Anfrage automatisch als POST, wenn
-dohne-Xverwendet wird — der Hinweis hilft, unbeabsichtigtes Verhalten zu vermeiden. - Wenn Sie "Content-Type: application/json automatisch hinzufügen" aktivieren, wird der bei JSON-APIs leicht vergessene Content-Type-Header automatisch ergänzt.
- Sowohl die Werte für die Basic-Authentifizierung als auch für das Bearer-Token werden ausschließlich im Browser verarbeitet und niemals an einen Server gesendet.
- Das generierte
-k(Zertifikatsprüfung überspringen) ist nur eine temporäre Notlösung für lokale Entwicklungsumgebungen mit selbstsignierten Zertifikaten. Vermeiden Sie die dauerhafte Nutzung gegen Produktions-APIs.
Wofür Sie es nutzen können
Um das Verhalten einer Schnittstelle zu prüfen
**Eine Schnittstelle, die sich aus dem Browser nicht aufrufen lässt, kann mit curl dennoch erprobt werden, von CORS ungehindert.**
Um einen Befehl in eine Arbeitsanweisung aufzunehmen
Sie können festhalten, woraus eine Anfrage besteht, und zwar so, dass jeder sie nachstellen kann.
Um die Schritte zur Nachstellung eines Fehlers weiterzugeben
**Jemandem einen auszuführenden Befehl zu reichen ergibt eine Nachstellung, die von Umgebungsunterschieden weit weniger berührt wird.**
Um die Optionen von curl zu erlernen
Sie sehen, in welche Option jede Eingabe des Formulars übergeht.
Begriffe zu curl
- -X
- Gibt die Methode ausdrücklich an. **Da `-d` sie auch ohne Angabe zu POST macht, braucht man dies für PUT oder DELETE.**
- -H
- Fügt eine Kopfzeile hinzu. Mehrfach geschrieben, werden entsprechend viele angehängt.
- -d
- Gibt den Rumpf der Anfrage an. **Wer es schreibt, macht die Methode zu POST, und der voreingestellte Inhaltstyp wird die Formularkodierung.**
- -u
- Gibt Benutzernamen und Kennwort der einfachen Anmeldung an, geschrieben als `Benutzer:Kennwort`.
- Bearer-Token
- Das Verfahren, die Anmeldedaten als `Authorization: Bearer ...` zu senden. Sehr viele Schnittstellen bedienen sich dieser Form.
- -i und -v
- Zeigen die Antwortkopfzeilen beziehungsweise die Einzelheiten des Austauschs. **Beide verdienen ihren Platz, wenn etwas nicht laufen will.**
Häufig gestellte Fragen
-d (Body-Daten) ohne die Option -X erhält, sendet es die Anfrage automatisch als POST. Für den seltenen Fall, dass GET bei gleichzeitigem Body beibehalten werden soll, füge dem generierten Befehl manuell -X GET hinzu.
Übrigens – warum curl das Tool ist, das jeder benutzt, aber kaum jemand kennt
curl ist ein Kommandozeilen-Tool zur Datenübertragung über URLs, das 1996 vom schwedischen Ingenieur Daniel Stenberg entwickelt wurde. Es entstand aus einem kleinen Skript, das Wechselkurse für einen IRC-Chatbot abrief, und wuchs seitdem zu einem riesigen Projekt heran, das über 25 Protokolle unterstützt, darunter HTTP, FTP und SMTP.
curl gilt als eine der am weitesten verbreiteten Software der Welt. Es ist in praktisch jedem internetfähigen Gerät eingebettet – Smartphones, Autos, Haushaltsgeräten, Spielekonsolen und sogar Raumsonden (es kam auch bei NASA-Marsmissionen zum Einsatz) – mit einer geschätzten installierten Basis von mehreren zehn Milliarden Geräten. Trotz dieser enormen Verbreitung bleibt es ein klassisches Beispiel für unauffällige Infrastruktur, die außerhalb von Entwicklerkreisen kaum jemand kennt.
Stenberg wurde 2019 von der Linux Foundation für seine Beiträge zu grundlegenden Webtechnologien ausgezeichnet. Er ist bis heute der zentrale Maintainer, der die Entwicklung von curl vorantreibt, und ist dafür bekannt, seit über zwei Jahrzehnten sorgfältig auf Abwärtskompatibilität zu achten.
Selbst jetzt, wo grafische Tools wie Postman weit verbreitet sind, werden curl-Befehle weiterhin in READMEs, offizieller Dokumentation und bei der API-Überprüfung verwendet. Der Grund ist einfach: curl erfordert keine Installation und ist auf nahezu jedem Linux- und macOS-System bereits vorinstalliert, sodass sich mit einem einzigen Befehl sofort ein Ergebnis erzeugen und teilen lässt – eine Reproduzierbarkeit, die kaum zu übertreffen ist.