Was ist der curl-Befehl? Beispiele, Flags, HTTP-Requests
curl ist ein Command-Line-Tool zum Senden von HTTP/HTTPS/FTP-Requests vom Terminal. Genutzt für API-Testing, Debugging, Scripting und CI-Checks.
Was ist der curl-Befehl?
curl (Client URL) ist ein Command-Line-Tool und Library zum Übertragen von Daten mit URLs. Es unterstützt Dutzende Protokolle (HTTP, HTTPS, FTP, SFTP, SMTP, IMAP, LDAP, SCP) und ist der De-facto-Standard für HTTP-Requests vom Terminal. Ursprünglich 1996 von Daniel Stenberg geschrieben, ist curl mit den meisten Linux-Distributionen, macOS und Windows 10+ gebündelt.
Entwickler nutzen curl für API-Endpoint-Testing, HTTP-Debugging, Scripting-Automation, File-Downloads und CI/CD-Checks.
Basic curl-Syntax
curl https://api.example.com/users/42Mit Headers + Body:
curl -i https://api.example.com/users/42POST mit JSON-Body:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'Meist-genutzte curl-Flags
| Flag | Was es tut |
|---|---|
-X METHOD | HTTP-Methode setzen |
-H "Header: value" | Request-Header hinzufügen |
-d 'data' | Request-Body senden |
-d @file.json | Body aus Datei lesen |
-F "field=value" | multipart/form-data-Feld senden |
-F "file=@photo.jpg" | File hochladen (multipart) |
-i | Response-Headers inkludieren |
-I | HEAD-Request senden |
-L | Redirects folgen |
-o file | Response-Body in Datei speichern |
-s | Silent-Mode |
-v | Verbose-Output (Debug) |
-k | TLS-Cert-Verifikation überspringen |
-u user:pass | HTTP-Basic-Auth |
--max-time N | Total-Timeout in Sekunden |
Häufige curl-Rezepte
Einen API-Endpoint testen
curl -i https://api.example.com/healthJSON POSTen
curl -X POST https://api.example.com/orders \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": 42, "quantity": 1}'Datei downloaden
curl -O https://example.com/large-file.zipFile uploaden (multipart)
curl -F "avatar=@photo.jpg" -F "username=alice" https://api.example.com/uploadNur HTTP-Status-Code holen
curl -s -o /dev/null -w "%{http_code}" https://example.comcurl vs wget vs httpie
| Aspekt | curl | wget | HTTPie |
|---|---|---|---|
| Am besten für | Scripting, API-Testing | File-Downloads, Mirroring | Human-friendly API-Testing |
| Output | Stdout | Datei | Stdout, color-coded |
| Rekursiver Download | Nein | Ja (Spezialität) | Nein |
| Protokolle | 30+ | HTTP, HTTPS, FTP | Nur HTTP/HTTPS |
| Vorinstalliert | Fast überall | Nur Linux typisch | Erfordert Install |
Häufige curl-Fallstricke
- Content-Type für JSON vergessen.
- Quote-Escaping in Shell. Single Quotes nutzen.
- Geloggte Secrets. Bearer-Tokens in
-Hlanden in Shell-History. - HTTP/2-Issues. Alte curl-Versionen.
- Falscher Status-Code in Scripts.
--failfür non-zero Exit auf 4xx/5xx.
curl in CI/CD
- Smoke-Tests nach Deploy.
- Health-Check-Endpoints.
- API-Integration-Tests.
- Performance-Budget-Tests.
FAQ: curl-Befehl
Was ist der Unterschied zwischen -d und --data-raw?
-d verarbeitet @ als "aus Datei lesen". --data-raw sendet literale @-Characters.
Wie sende ich eine Custom-HTTP-Methode?
-X CUSTOM funktioniert.
Wie sehe ich den Request, den curl sendet?
-v für Verbose-Mode.
Kann curl parallele Requests?
curl 7.66+ unterstützt --parallel. Für Load-Testing at Scale dedizierte Tools wie LoadFocus.
Wie handhabe ich Cookies über mehrere curl-Calls?
Speichern mit --cookie-jar, senden mit --cookie.
Kann ich curl als Load-Testing-Tool nutzen?
Für 1-10 konkurrierende Requests ja. Für echtes Load-Testing dedizierte Tools nutzen.
Über curl hinaus: Load-Testing at Scale mit LoadFocus
Wenn Sie die Limits von curl-in-a-Loop für Load-Testing erreicht haben, läuft LoadFocus JMeter- und k6-Scripts, die HTTP-Requests bis 12.500 VUs aus 25+ Regionen treiben. Registrieren bei loadfocus.com/signup.
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um — derselben Plattform, die alles antreibt, was du gerade gelesen hast.