API-Test- und Debugging-Leitfaden: Von cURL bis Online-Tools
Entwickler-Tools
HTTP-Anfragemethoden
| Methode | Verwendung | Idempotent | Sicher |
|---|---|---|---|
| GET | Ressource abrufen | ✅ | ✅ |
| POST | Ressource erstellen | ❌ | ❌ |
| PUT | Vollständige Aktualisierung | ✅ | ❌ |
| PATCH | Teilaktualisierung | ❌ | ❌ |
| DELETE | Ressource löschen | ✅ | ❌ |
| HEAD | Header abrufen | ✅ | ✅ |
| OPTIONS | CORS-Preflight | ✅ | ✅ |
Häufige Anfrage-Header
| Header | Beschreibung | Beispiel |
|---|---|---|
Content-Type |
Format des Anfragekörpers | application/json |
Accept |
Erwartetes Antwortformat | application/json |
Authorization |
Authentifizierungsinformation | Bearer token... |
User-Agent |
Client-Kennung | Mozilla/5.0... |
Cookie |
Cookie | session=abc123 |
X-Request-ID |
Anfrageverfolgungs-ID | UUID |
Häufige Content-Type-Werte
| Wert | Verwendung |
|---|---|
application/json |
JSON-Daten |
application/x-www-form-urlencoded |
Formulardaten |
multipart/form-data |
Datei-Upload |
text/plain |
Reintext |
text/html |
HTML |
Authentifizierungsmethoden
1. Bearer Token (am häufigsten)
# cURL
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
https://api.example.com/users
# JavaScript
fetch('https://api.example.com/users', {
headers: {
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9...',
},
});
2. Basic Auth
# cURL (automatische Kodierung)
curl -u username:password https://api.example.com/users
# Manuelle Kodierung
# Base64("username:password") = "dXNlcm5hbWU6cGFzc3dvcmQ="
curl -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \
https://api.example.com/users
3. API Key
# Methode 1: Header
curl -H "X-API-Key: your-api-key" \
https://api.example.com/users
# Methode 2: Query-Parameter
curl "https://api.example.com/users?api_key=your-api-key"
cURL-Befehl im Detail
Einfache GET-Anfrage
# Einfachstes GET
curl https://api.example.com/users
# Antwort-Header anzeigen
curl -i https://api.example.com/users
# Nur Antwort-Header anzeigen
curl -I https://api.example.com/users
# Weiterleitungen folgen
curl -L https://example.com/redirect
POST-Anfrage
# JSON-Daten
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'
# Formulardaten
curl -X POST https://api.example.com/users \
-d "name=Alice&email=alice@example.com"
# Datei-Upload
curl -X POST https://api.example.com/upload \
-F "file=@photo.jpg" \
-F "description=My photo"
Erweiterte Optionen
# Timeout-Einstellung
curl --connect-timeout 5 --max-time 30 https://api.example.com
# In Datei speichern
curl -o response.json https://api.example.com/users
# Stiller Modus (kein Fortschrittsbalken)
curl -s https://api.example.com/users
# Ausführliche Ausgabe (zum Debuggen)
curl -v https://api.example.com/users
# SSL-Zertifikatsprüfung ignorieren (nur Entwicklungsumgebung)
curl -k https://self-signed.example.com
# Proxy
curl -x http://proxy:8080 https://api.example.com
# Cookie
curl -b "session=abc123" https://api.example.com/users
# Cookie speichern und senden
curl -c cookies.txt -b cookies.txt https://api.example.com/users
Häufige HTTP-Statuscodes
| Statuscode | Bedeutung | Häufige Ursache |
|---|---|---|
| 200 | OK | Erfolg |
| 201 | Created | POST erfolgreich erstellt |
| 204 | No Content | DELETE erfolgreich |
| 301 | Moved Permanently | Permanente Weiterleitung |
| 304 | Not Modified | Cache-Treffer |
| 400 | Bad Request | Falsche Parameter |
| 401 | Unauthorized | Nicht authentifiziert |
| 403 | Forbidden | Keine Berechtigung |
| 404 | Not Found | Ressource existiert nicht |
| 409 | Conflict | Ressourcenkonflikt |
| 422 | Unprocessable Entity | Validierung fehlgeschlagen |
| 429 | Too Many Requests | Ratenbegrenzung |
| 500 | Internal Server Error | Serverfehler |
| 502 | Bad Gateway | Upstream-Dienst nicht verfügbar |
| 503 | Service Unavailable | Dienst überlastet |
ToolsKu zum API-Test verwenden
cURL zu Code konvertieren
- cURL-zu-Code-Tool öffnen
- cURL-Befehl einfügen
- Zielsprache auswählen (JavaScript/Python/Go/Java usw.)
- Generierten Code kopieren
Beispiel
# cURL-Eingabe
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer token123" \
-d '{"name": "Alice"}'
Konvertiert zu JavaScript:
const response = await fetch('https://api.example.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token123',
},
body: JSON.stringify({ name: 'Alice' }),
});
const data = await response.json();
API-Debugging-Techniken
1. Vollständige Anfrage/Antwort anzeigen
# -v zeigt detaillierte Informationen
curl -v https://api.example.com/users
# Ausgabe:
> GET /users HTTP/1.1 ← Anfragezeile
> Host: api.example.com ← Anfrage-Header
> Authorization: Bearer ...
>
< HTTP/1.1 200 OK ← Antwortzeile
< Content-Type: application/json ← Antwort-Header
< X-RateLimit-Remaining: 99
<
[{"id": 1, "name": "Alice"}] ← Antwortkörper
2. JSON-Antwort formatieren
# Mit jq formatieren
curl -s https://api.example.com/users | jq
# Mit python
curl -s https://api.example.com/users | python -m json.tool
# Oder das JSON-Formatierungstool von ToolsKu verwenden
3. Antwortzeit messen
# Detaillierte Zeitstatistik
curl -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
-o /dev/null -s https://api.example.com/users
# Ausgabe:
# DNS: 0.012s
# Connect: 0.035s
# TTFB: 0.120s
# Total: 0.125s
4. CORS-Probleme beheben
Browser-Fehler:
Access to fetch at 'https://api.example.com' from origin 'https://app.example.com'
has been blocked by CORS policy
Fehlerbehebungsschritte:
1. OPTIONS-Preflight-Anfrage prüfen
curl -X OPTIONS -H "Origin: https://app.example.com" \
-H "Access-Control-Request-Method: POST" \
-i https://api.example.com/users
2. Antwort-Header prüfen
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Max-Age: 86400
5. Authentifizierungsprobleme beheben
401 Unauthorized Fehlerbehebung:
1. Token abgelaufen? → JWT-Dekodierungstool verwenden, um exp zu prüfen
2. Token-Format korrekt? → Bearer-Präfix prüfen
3. Token gesendet? → curl -v Anfrage-Header prüfen
403 Forbidden Fehlerbehebung:
1. Hat der Benutzer Berechtigungen? → Benutzerrolle prüfen
2. Ist die IP auf der Whitelist? → Serverprotokolle prüfen
3. Ratenlimit überschritten? → Statuscode 429 prüfen
Bewährte Methoden für API-Tests
1. Umgebungsvariablen verwalten
# Umgebungsvariablen für sensible Informationen verwenden
export API_BASE="https://api.example.com"
export API_TOKEN="your-token"
curl -H "Authorization: Bearer $API_TOKEN" "$API_BASE/users"
2. Anfragesammlung
#!/bin/bash
# api-test.sh
BASE="https://api.example.com"
TOKEN="Bearer $API_TOKEN"
HEADER="-H 'Content-Type: application/json' -H 'Authorization: $TOKEN'"
# Benutzerliste abrufen
get_users() { curl -s $HEADER "$BASE/users" | jq; }
# Benutzer erstellen
create_user() { curl -s -X POST $HEADER -d "$1" "$BASE/users" | jq; }
# Einzelnen Benutzer abrufen
get_user() { curl -s $HEADER "$BASE/users/$1" | jq; }
# Verwendung
get_users
create_user '{"name":"Bob"}'
get_user 1
3. Automatisierte Tests
// API-Tests mit fetch schreiben
async function testApi() {
// GET testen
const listRes = await fetch('/api/users');
console.assert(listRes.status === 200, 'GET /users should return 200');
// POST testen
const createRes = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Test' }),
});
console.assert(createRes.status === 201, 'POST /users should return 201');
const created = await createRes.json();
console.assert(created.name === 'Test', 'Name should match');
}
Häufige Fragen
cURL-Anführungszeichen auf Windows falsch?
Windows CMD verwendet doppelte Anführungszeichen, PowerShell hat Escape-Probleme:
# In PowerShell ist cURL ein Alias für Invoke-WebRequest
# curl.exe verwenden, um das echte cURL aufzurufen
curl.exe -X POST https://api.example.com/users `
-H "Content-Type: application/json" `
-d '{\"name\": \"Alice\"}'
Wie Timeout-Probleme beheben?
1. DNS langsam? → curl -w time_namelookup prüfen
2. Verbindung langsam? → curl -w time_connect prüfen
3. Serververarbeitung langsam? → curl -w time_starttransfer - time_connect prüfen
4. Antwortübertragung langsam? → curl -w time_total - time_starttransfer prüfen
Zusammenfassung
API-Debugging ist Entwickleralltag — cURL-Befehle, HTTP-Statuscodes, Authentifizierungsmethoden und Debugging-Techniken beherrschen, um Schnittstellenprobleme schnell zu lokalisieren. Das cURL-zu-Code-Tool und das JSON-Formatierungstool von ToolsKu sind gute Begleiter beim API-Debugging und helfen Ihnen, Schnittstellen schnell zu testen und Antworten zu überprüfen.
#API testing#HTTP requests#cURL#API debugging#tutorial