curl-Befehl-Generator
curl-Befehle aus Methode, Headern und Body erstellen
Generated cURL Command
curl \ -L \ 'https://api.example.com/users'
Request
Headers
Authentication
Options
Quick Templates
Der curl Command Builder generiert vollständige, korrekt escapte curl-Befehle über ein interaktives Formular. So können Sie HTTP-Methode, Header, Authentifizierung, Request-Body und Optionen konfigurieren, ohne sich die umfangreiche Flag-Syntax von curl merken zu müssen. Wählen Sie POST, fügen Sie einen JSON-Body und ein Bearer-Token hinzu und erhalten Sie einen einsatzbereiten Befehl wie curl -X POST -H "Authorization: Bearer eyJ..." -H "Content-Type: application/json" -d '{"name":"Alice"}' https://api.example.com/users.
curl verstehen
curl ist das Schweizer Taschenmesser von HTTP. Es ist auf praktisch jeder Linux-Distribution, jeder macOS-Installation vorinstalliert und für Windows verfügbar. Wenn Sie einen API-Endpunkt testen, einen Fehlerbericht reproduzieren, Response-Header prüfen oder verifizieren müssen, ob ein Server erreichbar ist, ist curl meist der schnellste Weg von der Frage zur Antwort. Es läuft in jedem Terminal, erfordert keine Einrichtung und produziert Ausgaben, die Sie an andere Tools weiterleiten, in Dateien speichern oder in Skripte einbinden können.
Die Herausforderung bei curl ist sein schier unglaublicher Umfang. Das Tool unterstützt über 200 Kommandozeilen-Flags, die alles abdecken von einfachen GET-Anfragen bis zu Client-Zertifikat-Authentifizierung, Proxy-Tunneling und wiederaufnehmbaren Downloads. Für alltägliche API-Tests benötigen Sie vielleicht ein Dutzend dieser Flags, aber zu wissen welche und die Syntax richtig hinzubekommen -- besonders die Quoting-Regeln, die sich zwischen bash, zsh, PowerShell und CMD unterscheiden -- erfordert Übung. Es ist leicht zu vergessen, ob das Authentifizierungs-Flag -u oder --user ist, ob der Body nach -d oder --data kommt und ob JSON-Bodies einfache Anführungszeichen oder escapte doppelte Anführungszeichen benötigen.
Dieser Builder übernimmt die Syntax für Sie. Sie füllen die Teile aus, die Sie kennen -- URL, Methode, Header, Body, Authentifizierungsdaten -- und er generiert einen korrekt formatierten, richtig escapten Befehl für Ihre Plattform. Sie können ihn direkt in Ihr Terminal kopieren und ausführen. Mit der Zeit ist das interaktive Erstellen von Befehlen und das Studieren der Ausgabe eine der besten Methoden, die curl-Syntax zu lernen, weil Sie sehen können, wie jedes Formularfeld auf ein Flag abgebildet wird und wie das Quoting für Ihre Shell funktioniert.
So erstellen Sie einen curl-Befehl
- Geben Sie die Ziel-URL für Ihre HTTP-Anfrage ein.
- Wählen Sie die HTTP-Methode (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS).
- Fügen Sie benutzerdefinierte Header hinzu (z. B.
Content-Type: application/json,Authorization: Bearer <token>). - Legen Sie den Request-Body für POST/PUT/PATCH-Anfragen fest (JSON, Formulardaten oder Rohtext).
- Konfigurieren Sie Optionen wie Redirect-Verfolgung, Timeout oder ausführliche Ausgabe.
- Kopieren Sie den generierten Befehl für Ihre Shell (Unix/macOS oder Windows PowerShell).
curl-Befehlsbeispiele
Einfache GET-Anfrage
curl https://api.example.com/users/42
POST-Anfrage mit JSON-Body
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "[email protected]", "role": "admin"}'
Authentifizierte Anfrage mit Bearer-Token
curl https://api.example.com/account \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
PUT-Anfrage mit Basic Auth
curl -X PUT https://api.example.com/settings \
-u "admin:password123" \
-H "Content-Type: application/json" \
-d '{"notifications": true, "theme": "dark"}'
POST-Formulardaten (URL-kodiert)
curl -X POST https://example.com/login \
-d "username=alice&password=secret123"
Anfrage mit mehreren Optionen
curl -X DELETE https://api.example.com/posts/99 \
-H "Authorization: Bearer eyJhbGci..." \
-H "X-Request-ID: req-abc-123" \
-L \
--max-time 30 \
-w "\n%{http_code}\n"
Wann den curl Command Builder verwenden
- APIs während der Entwicklung testen -- schnell Anfragen erstellen, um Endpunkte zu testen, ohne Client-Code zu schreiben oder zu einem GUI-Tool zu wechseln.
- Dokumentationsbeispiele generieren -- korrekte, zum Kopieren bereite curl-Befehle für API-Dokumentation und README-Dateien erstellen.
- Reproduzierbare Fehlerberichte erstellen -- einen eigenständigen curl-Befehl generieren, der ein Problem reproduziert, sodass andere Entwickler es leicht testen können.
- curl-Syntax lernen -- Befehle interaktiv erstellen und die generierten Flags studieren, um curls Optionen anhand von Beispielen zu lernen.
- Plattformübergreifende Befehlsgenerierung -- korrekt escapte Befehle für Unix/macOS-Shells (mit einfachen Anführungszeichen) und Windows PowerShell (mit escapten doppelten Anführungszeichen) erhalten.
- API-Testfälle teilen -- einen eigenständigen Befehl erstellen, den jeder mit curl ausführen kann, um das Verhalten zu überprüfen.
curl-Flag-Referenz
Gängige Flags
| Flag | Langform | Zweck | Beispiel |
|---|---|---|---|
-X | --request | HTTP-Methode setzen | -X POST |
-H | --header | Benutzerdefinierten Header hinzufügen | -H "Content-Type: application/json" |
-d | --data | Request-Body senden | -d '{"key": "value"}' |
-u | --user | Basic-Authentifizierung | -u "user:pass" |
-L | --location | Redirects folgen | -L |
-o | --output | Ausgabe in Datei schreiben | -o response.json |
-s | --silent | Fortschrittsbalken unterdrücken | -s |
-v | --verbose | Request/Response-Header anzeigen | -v |
-k | --insecure | TLS-Überprüfung überspringen | -k |
-w | --write-out | Benutzerdefiniertes Ausgabeformat | -w "%{http_code}" |
Timeout- und Retry-Flags
| Flag | Zweck | Beispiel |
|---|---|---|
--max-time | Gesamtzeitlimit in Sekunden | --max-time 30 |
--connect-timeout | Verbindungs-Timeout in Sekunden | --connect-timeout 5 |
--retry | Anzahl der Wiederholungsversuche bei Fehler | --retry 3 |
--retry-delay | Sekunden zwischen Wiederholungen | --retry-delay 2 |
Body- und Content-Flags
| Flag | Zweck | Wann verwenden |
|---|---|---|
-d / --data | Daten als Request-Body senden | JSON, Formulardaten, Rohtext |
--data-raw | Daten ohne @-Interpretation senden | Wenn der Body @-Zeichen enthält |
--data-binary | Binärdaten unverändert senden | Datei-Uploads, binäre Payloads |
-F / --form | Multipart-Formulardaten senden | Datei-Uploads mit Formularfeldern |
--data-urlencode | Daten vor dem Senden URL-kodieren | Formulardaten mit Sonderzeichen |
Shell-Escaping und Quoting
Der Builder behandelt die kniffligen Unterschiede zwischen Shells:
Unix/macOS (bash, zsh) -- Verwendet einfache Anführungszeichen für JSON-Bodies, um die Interpretation von $ und ! zu vermeiden:
curl -d '{"price": "$9.99"}' https://api.example.com/order
Windows PowerShell -- Verwendet escapte doppelte Anführungszeichen, da PowerShell die Interpolation einfach angeführter Zeichenketten nicht auf dieselbe Weise unterstützt:
curl -d "{\"price\": \"$9.99\"}" https://api.example.com/order
Windows CMD -- Verwendet doppelte Anführungszeichen mit escapten inneren Anführungszeichen:
curl -d "{\"price\": \"$9.99\"}" https://api.example.com/order
Praktische Tipps für die Verwendung von curl
Eines der nützlichsten, aber am wenigsten genutzten curl-Features ist das -w (write-out)-Flag. Es ermöglicht das Ausgeben spezifischer Informationen über die Anfrage nach Abschluss, wie den HTTP-Statuscode, die Gesamtzeit, die DNS-Auflösungszeit oder die Größe der Antwort. Für schnelle API-Tests liefert curl -s -o /dev/null -w "%{http_code}\n" https://api.example.com/health nur den Statuscode ohne Body-Ausgabe -- perfekt für Health-Check-Skripte. Sie können auch -w "%{time_total}\n" verwenden, um Antwortzeiten von der Kommandozeile zu messen, ohne zusätzliche Tools zu installieren.
Beim Debugging von SSL/TLS-Problemen zeigt curls -v (verbose)-Flag den gesamten TLS-Handshake einschließlich der Zertifikatskette, der Protokollversion und der Cipher-Suite. Das ist unverzichtbar für die Diagnose von Zertifikatsfehlern, das Testen von Zertifikatsrotation oder die Überprüfung, ob ein Server eine bestimmte TLS-Version unterstützt. Kombinieren Sie -v mit --tlsv1.2 oder --tlsv1.3, um eine bestimmte TLS-Version zu erzwingen und die Kompatibilität zu testen.
Für API-Test-Workflows sollten Sie häufig verwendete curl-Befehle als Shell-Skripte oder Aliase speichern. Ein Befehl wie curl -s -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" https://api.example.com/v1/ ist mühsam, wiederholt einzutippen. Ihn als Funktion oder Alias mit der Basis-URL und den gemeinsamen Headern zu speichern, bedeutet, dass Sie für jeden Test nur den spezifischen Endpunkt und Body anhängen müssen. Viele Entwickler pflegen eine Sammlung von curl-Befehlen in einer requests.sh-Datei in ihrem Projekt, die gleichzeitig als lebendige Dokumentation der API dient.
Häufig gestellte Fragen
Wie sende ich eine Datei als Request-Body?
Verwenden Sie das @-Präfix mit -d, um den Body aus einer Datei zu lesen: curl -X POST -d @payload.json -H "Content-Type: application/json" https://api.example.com/upload. Für Multipart-Datei-Upload verwenden Sie -F "[email protected]".
Was ist der Unterschied zwischen -d und -F?
-d sendet den Body als einzelnen Block (normalerweise application/x-www-form-urlencoded oder application/json). -F sendet multipart/form-data, das für Datei-Uploads und gemischte Formularfelder konzipiert ist. Verwenden Sie -F, wenn Sie Dateien zusammen mit Formulardaten hochladen müssen.
Sollte ich -k / --insecure verwenden, um die TLS-Überprüfung zu überspringen?
Nur in Entwicklungsumgebungen mit selbstsignierten Zertifikaten. Verwenden Sie -k niemals in Produktionsskripten oder beim Senden von Credentials, da es die Zertifikatsüberprüfung deaktiviert und die Verbindung für Man-in-the-Middle-Angriffe öffnet.
Wie sehe ich die Response-Header zusammen mit dem Body?
Verwenden Sie -i (include), um Response-Header vor dem Body anzuzeigen, oder -v (verbose), um sowohl Request- als auch Response-Header zusammen mit den TLS-Handshake-Details zu sehen. Für nur die Header ohne den Body verwenden Sie -I (HEAD-Anfrage) oder -o /dev/null -v, um den Body zu verwerfen, aber die ausführliche Ausgabe anzuzeigen.
Kann curl Redirects automatisch folgen?
Ja. Verwenden Sie -L (oder --location), um 3xx-Redirects zu folgen. Standardmäßig stoppt curl beim ersten Redirect und zeigt die Redirect-Antwort. Mit -L folgt es der Kette, bis eine endgültige Antwort erreicht wird. Sie können die Anzahl der Redirects mit --max-redirs 5 begrenzen.
Wie gehe ich mit Cookies in curl um?
Verwenden Sie -b, um Cookies zu senden, und -c, um vom Server empfangene Cookies zu speichern. Zum Beispiel speichert curl -c cookies.txt https://example.com/login -d "user=alice" die Login-Cookies, und curl -b cookies.txt https://example.com/dashboard sendet sie zurück. Das ist nützlich zum Testen von Authentifizierungsabläufen, die auf Session-Cookies basieren.
Verwandte Tools
- HTTP Header Formatter - Header für die Verwendung in curl-Befehlen formatieren
- HTTP Status Code Lookup - Statuscodes nachschlagen, die von curl-Anfragen zurückgegeben werden
- CORS Header Explainer - CORS-Header verstehen beim Testen von Cross-Origin-APIs
- Query String Parser/Builder - Query-Strings erstellen, die an curl-Request-URLs angehängt werden
- User-Agent Parser - User-Agent-Strings parsen, um benutzerdefinierte Werte in curl-Anfragen zu setzen