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/42

Mit Headers + Body:

curl -i https://api.example.com/users/42

POST 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

FlagWas es tut
-X METHODHTTP-Methode setzen
-H "Header: value"Request-Header hinzufügen
-d 'data'Request-Body senden
-d @file.jsonBody aus Datei lesen
-F "field=value"multipart/form-data-Feld senden
-F "file=@photo.jpg"File hochladen (multipart)
-iResponse-Headers inkludieren
-IHEAD-Request senden
-LRedirects folgen
-o fileResponse-Body in Datei speichern
-sSilent-Mode
-vVerbose-Output (Debug)
-kTLS-Cert-Verifikation überspringen
-u user:passHTTP-Basic-Auth
--max-time NTotal-Timeout in Sekunden

Häufige curl-Rezepte

Einen API-Endpoint testen

curl -i https://api.example.com/health

JSON 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.zip

File uploaden (multipart)

curl -F "avatar=@photo.jpg" -F "username=alice" https://api.example.com/upload

Nur HTTP-Status-Code holen

curl -s -o /dev/null -w "%{http_code}" https://example.com

curl vs wget vs httpie

AspektcurlwgetHTTPie
Am besten fürScripting, API-TestingFile-Downloads, MirroringHuman-friendly API-Testing
OutputStdoutDateiStdout, color-coded
Rekursiver DownloadNeinJa (Spezialität)Nein
Protokolle30+HTTP, HTTPS, FTPNur HTTP/HTTPS
VorinstalliertFast überallNur Linux typischErfordert Install

Häufige curl-Fallstricke

  • Content-Type für JSON vergessen.
  • Quote-Escaping in Shell. Single Quotes nutzen.
  • Geloggte Secrets. Bearer-Tokens in -H landen in Shell-History.
  • HTTP/2-Issues. Alte curl-Versionen.
  • Falscher Status-Code in Scripts. --fail fü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.

Wie schnell ist Ihre Website?

Steigern Sie ihre Geschwindigkeit und SEO nahtlos mit unserem kostenlosen Geschwindigkeitstest.

Kostenloser Websitespeed-Test

Analysieren Sie die Ladegeschwindigkeit Ihrer Website und verbessern Sie ihre Leistung mit unserem kostenlosen Seitengeschwindigkeits-Checker.

×