Grundlegende curl-Befehle, die jeder Webentwickler kennen sollte
Kommandozeilen-API-Tests laufen schneller mit wesentlichen curl-Befehlen für GET, POST, Header, Authentifizierung, Timeouts und Debugging für Webentwickler.
Neu bei curl? Beginnen Sie mit unserem Einsteiger-Leitfaden: HTTP-Anfragen mit curl stellen
Beim Debugging von APIs oder beim Testen von Endpunkten benötigen Sie schnelle, zuverlässige Tools, die keine komplexe Einrichtung erfordern. Während GUI-Tools wie Postman ihren Platz haben, bieten curl-Befehle für Webentwickler unvergleichliche Geschwindigkeit und Flexibilität für Tests über die Kommandozeile. Diese Referenz behandelt die wesentlichen curl-Befehle, die Sie täglich verwenden werden – von einfachen GET-Anfragen bis hin zu erweiterten Authentifizierungsmustern.
Wichtige Erkenntnisse
- Meistern Sie zuerst grundlegende GET- und POST-Anfragen – sie decken 80% der API-Test-Anforderungen ab
- Verwenden Sie immer die richtigen Header für Content-Type und Authorization
- Nutzen Sie den Verbose-Modus (
-v) beim Debugging von Verbindungsproblemen - Setzen Sie Timeouts, um hängende Skripte in Produktionsumgebungen zu verhindern
- Speichern Sie Antworten in Dateien für Analyse und Vergleich
- Folgen Sie Weiterleitungen mit
-Lfür vollständige Anfrageketten - Kombinieren Sie curl mit Tools wie jq für bessere JSON-Verarbeitung
Wesentliche curl-Befehle für API-Tests
1. Einfache GET-Anfrage
Der einfachste curl-Befehl ruft Daten von jeder URL ab:
curl https://api.github.com/users/octocat
Dies gibt die rohe JSON-Antwort zurück. Für bessere Lesbarkeit leiten Sie die Ausgabe durch einen JSON-Formatierer:
# macOS/Linux
curl https://api.github.com/users/octocat | jq
# Windows (erfordert jq-Installation)
curl https://api.github.com/users/octocat | jq
Wann verwenden: Schnelle API-Endpunkt-Tests, Überprüfung ob Services antworten, oder Daten für Skripte abrufen.
2. POST-Anfrage mit JSON-Daten
Moderne APIs erwarten JSON-Payloads. So senden Sie sie korrekt:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"john@example.com"}' \
https://api.example.com/users
Für komplexes JSON speichern Sie es in einer Datei und referenzieren diese:
curl -X POST \
-H "Content-Type: application/json" \
-d @user-data.json \
https://api.example.com/users
Wann verwenden: Ressourcen erstellen, Formulare übermitteln oder POST-Endpunkte mit strukturierten Daten testen.
3. Benutzerdefinierte Header hinzufügen
APIs benötigen oft spezifische Header für Authentifizierung, Content-Negotiation oder benutzerdefinierte Parameter:
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "User-Agent: MyApp/1.0" \
https://api.example.com/protected-resource
Wann verwenden: API-Authentifizierung, User-Agent setzen, Antwortformate spezifizieren oder benutzerdefinierte Anwendungsheader hinzufügen.
4. Weiterleitungen folgen
Standardmäßig stoppt curl bei Weiterleitungen. Verwenden Sie -L, um ihnen automatisch zu folgen:
curl -L https://bit.ly/shortened-url
Begrenzen Sie Weiterleitungssprünge, um Endlosschleifen zu verhindern:
curl -L --max-redirs 5 https://example.com
Wann verwenden: Kurze URLs testen, API-Weiterleitungen folgen oder Weiterleitungsketten in Ihren Anwendungen überprüfen.
5. Antwort in Datei speichern
Anstatt Ihr Terminal zu überladen, speichern Sie Antworten direkt in Dateien:
# Mit ursprünglichem Dateinamen speichern
curl -O https://example.com/data.json
# Mit benutzerdefiniertem Dateinamen speichern
curl -o my-data.json https://api.example.com/export
# Header und Body separat speichern
curl -D headers.txt -o response.json https://api.example.com/data
Wann verwenden: Dateien herunterladen, API-Antworten für Analyse speichern oder Testergebnisse archivieren.
6. Basis-Authentifizierung
Viele APIs verwenden noch immer Basis-Authentifizierung. Handhaben Sie sie sicher:
curl -u username:password https://api.example.com/secure-endpoint
Für bessere Sicherheit lassen Sie curl nach dem Passwort fragen:
curl -u username https://api.example.com/secure-endpoint
Wann verwenden: Interne APIs testen, Entwicklungsendpunkte zugreifen oder mit Legacy-Authentifizierungssystemen arbeiten.
7. Verbose-Ausgabe für Debugging
Wenn Anfragen fehlschlagen oder sich unerwartet verhalten, zeigt der Verbose-Modus genau, was passiert:
curl -v https://api.example.com/endpoint
Dies zeigt:
- Gesendete Request-Header
- Empfangene Response-Header
- SSL/TLS-Handshake-Details
- Verbindungsinformationen
Wann verwenden: Fehlgeschlagene Anfragen debuggen, API-Verhalten verstehen oder SSL-Probleme beheben.
8. Timeouts setzen
Verhindern Sie hängende Anfragen durch Setzen von Verbindungs- und Gesamt-Timeouts:
# 10-Sekunden Verbindungs-Timeout, 30-Sekunden Gesamt-Timeout
curl --connect-timeout 10 --max-time 30 https://slow-api.example.com
Wann verwenden: Langsame Endpunkte testen, Skript-Hänger verhindern oder mit unzuverlässigen Netzwerken arbeiten.
9. Formulardaten-Übermittlung
Für traditionelle Formularübermittlungen oder Datei-Uploads:
# Standard-Formulardaten
curl -X POST -d "username=john&password=secret" https://example.com/login
# Datei-Upload
curl -F "file=@document.pdf" -F "description=Important doc" https://example.com/upload
Wann verwenden: Formular-Endpunkte testen, Dateien hochladen oder mit Multipart-Daten arbeiten.
10. Response-Header einbeziehen
Sehen Sie sowohl Header als auch Body in der Ausgabe:
# Header mit Antwort einbeziehen
curl -i https://api.example.com/endpoint
# Nur Header (nützlich für Statuscode-Überprüfung)
curl -I https://api.example.com/endpoint
Wann verwenden: Response-Codes überprüfen, Caching-Probleme debuggen oder API-Header untersuchen.
Erweiterte curl-Befehle für Webentwickler
Mit Cookies arbeiten
Session-Status über Anfragen hinweg beibehalten:
# Cookies in Datei speichern
curl -c cookies.txt https://example.com/login
# Gespeicherte Cookies verwenden
curl -b cookies.txt https://example.com/dashboard
Proxy-Konfiguration
Anfragen durch Proxies für Tests oder Sicherheit leiten:
curl --proxy http://proxy.company.com:8080 https://api.example.com
SSL-Zertifikat-Behandlung
Für Entwicklungsumgebungen mit selbstsignierten Zertifikaten:
# Zertifikatsprüfung überspringen (nur Entwicklung)
curl -k https://localhost:8443/api
# Benutzerdefiniertes CA-Zertifikat verwenden
curl --cacert custom-ca.pem https://secure-api.example.com
Performance- und Automatisierungstipps
Batch-Operationen
Mehrere Endpunkte effizient testen:
# Mehrere URLs in einem Befehl
curl https://api1.example.com https://api2.example.com
# Aus einer Datei
curl -K url-list.txt
Ausgabeformatierung
Antworten lesbarer machen:
# JSON mit jq schön formatieren
curl -s https://api.example.com/data | jq '.'
# Spezifische Felder extrahieren
curl -s https://api.example.com/users | jq '.[] | .name'
Fehlerbehandlung
curl bei HTTP-Fehlern für Skripte stumm fehlschlagen lassen:
curl --fail --silent https://api.example.com/endpoint || echo "Request failed"
curl vs. andere Tools: Wann was verwenden
Verwenden Sie curl wenn:
- Schnelle Kommandozeilen-Tests
- Skripting und Automatisierung
- CI/CD-Pipeline-Integration
- Minimaler Systemressourcenverbrauch
Verwenden Sie Postman wenn:
- Komplexe Request-Sammlungen
- Team-Zusammenarbeit
- Visuelle Response-Inspektion
- Erweiterte Test-Workflows
Verwenden Sie HTTPie wenn:
- Lesbarere Syntax bevorzugt
- JSON-first API-Tests
- Bessere Standard-Formatierung
Häufig gestellte Fragen
Wie gehe ich mit API-Rate-Limiting bei curl-Befehlen um?
Verwenden Sie die limit-rate Option, um Anfragen zu drosseln, beispielsweise durch Begrenzung auf 200 Kilobytes pro Sekunde. Sie können auch Verzögerungen zwischen Anfragen in Skripten mit sleep-Befehlen hinzufügen.
Was ist der Unterschied zwischen den -d und -F Flags in curl?
Das -d Flag sendet Daten als form-encoded, was der Standard für POST-Anfragen ist. Das -F Flag sendet Daten als multipart form data, was beim Hochladen von Dateien erforderlich ist.
Kann ich curl zum Testen von GraphQL-APIs verwenden?
Ja. Senden Sie dazu eine POST-Anfrage mit einem JSON-Payload, der Ihre GraphQL-Query enthält.
Wie debugge ich SSL-Zertifikatsprobleme mit curl?
Verwenden Sie den Verbose-Modus, um den SSL-Handshake zu inspizieren, überspringen Sie die Zertifikatsprüfung temporär falls nötig mit dem insecure Flag, oder spezifizieren Sie eine benutzerdefinierte Certificate Authority mit der cacert Option.
Was ist der beste Weg, authentifizierte APIs mit curl zu testen?
Für Token-basierte Authentifizierung übergeben Sie den Authorization-Header mit Ihrem Token. Für Basis-Authentifizierung verwenden Sie die username und password Option. Zur Verbesserung der Sicherheit speichern Sie sensible Werte in Umgebungsvariablen und referenzieren sie in Ihren Befehlen.
Fazit
Diese curl-Befehle bilden das Rückgrat des Kommandozeilen-API-Testings. Beginnen Sie mit einfachen GET- und POST-Anfragen und integrieren Sie dann schrittweise Header, Authentifizierung und erweiterte Features, während Ihre Anforderungen wachsen. Der Schlüssel liegt darin, Muskelgedächtnis für die häufigsten Muster aufzubauen – sobald Sie Endpunkte schnell vom Terminal aus testen können, werden Sie während der Entwicklung und beim Debugging ständig zu curl greifen.
curl-Befehle für Webentwickler bieten die Grundlage für effizientes API-Testing und Debugging. Diese Befehle funktionieren plattformübergreifend und integrieren sich nahtlos in Entwicklungsworkflows, was sie zu unverzichtbaren Tools für das Toolkit jedes Webentwicklers macht.