HTTP Status Codes: Der komplette Überblick
HTTP Status Codes zeigen das Ergebnis einer HTTP-Anfrage an. Von 200 OK bis 500 Server Error – hier erfahren Sie, was jeder Code bedeutet.
Status Code Kategorien
| Bereich |
Kategorie |
Bedeutung |
| 1xx |
Informational |
Anfrage erhalten, Verarbeitung läuft |
| 2xx |
Success |
Anfrage erfolgreich |
| 3xx |
Redirection |
Weiterleitung erforderlich |
| 4xx |
Client Error |
Fehler auf Client-Seite |
| 5xx |
Server Error |
Fehler auf Server-Seite |
1xx - Informational
| Code |
Name |
Beschreibung |
100 |
Continue |
Server hat Header erhalten, Client kann Body senden |
101 |
Switching Protocols |
Server wechselt Protokoll (z.B. zu WebSocket) |
2xx - Success
| Code |
Name |
Verwendung |
200 |
OK |
Standard-Erfolg (GET, PUT) |
201 |
Created |
Ressource erstellt (POST) |
202 |
Accepted |
Anfrage akzeptiert, Verarbeitung läuft |
204 |
No Content |
Erfolg ohne Response-Body (DELETE) |
206 |
Partial Content |
Teilinhalt (Range-Requests) |
API-Beispiele
# GET /users/123 → 200 OK
{
"id": 123,
"name": "Max"
}
# POST /users → 201 Created
Location: /users/124
{
"id": 124,
"name": "Anna"
}
# DELETE /users/123 → 204 No Content
(kein Body)
3xx - Redirection
| Code |
Name |
Verwendung |
301 |
Moved Permanently |
URL dauerhaft geändert (SEO-relevant!) |
302 |
Found |
Temporäre Weiterleitung |
303 |
See Other |
Nach POST zu GET weiterleiten |
304 |
Not Modified |
Caching: Ressource unverändert |
307 |
Temporary Redirect |
Wie 302, behält HTTP-Methode bei |
308 |
Permanent Redirect |
Wie 301, behält HTTP-Methode bei |
301 vs. 302
# 301 - Permanent (für SEO!)
# Alte URL → Neue URL, Suchmaschinen übertragen Ranking
HTTP/1.1 301 Moved Permanently
Location: https://example.com/neue-url
# 302 - Temporär
# Für Wartungsseiten, Login-Redirects
HTTP/1.1 302 Found
Location: https://example.com/wartung
4xx - Client Errors
| Code |
Name |
Bedeutung |
400 |
Bad Request |
Ungültige Anfrage (Syntax, Validierung) |
401 |
Unauthorized |
Authentifizierung erforderlich |
403 |
Forbidden |
Zugriff verweigert (trotz Auth) |
404 |
Not Found |
Ressource nicht gefunden |
405 |
Method Not Allowed |
HTTP-Methode nicht erlaubt |
408 |
Request Timeout |
Anfrage dauerte zu lange |
409 |
Conflict |
Konflikt mit aktuellem Zustand |
410 |
Gone |
Ressource dauerhaft entfernt |
415 |
Unsupported Media Type |
Content-Type nicht unterstützt |
422 |
Unprocessable Entity |
Validierungsfehler |
429 |
Too Many Requests |
Rate Limit überschritten |
401 vs. 403
# 401 - Nicht authentifiziert
# "Wer bist du?" - Login erforderlich
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer
# 403 - Authentifiziert, aber nicht berechtigt
# "Ich weiß wer du bist, aber du darfst das nicht"
HTTP/1.1 403 Forbidden
5xx - Server Errors
| Code |
Name |
Bedeutung |
500 |
Internal Server Error |
Allgemeiner Serverfehler |
501 |
Not Implemented |
Funktion nicht implementiert |
502 |
Bad Gateway |
Ungültige Antwort vom Backend |
503 |
Service Unavailable |
Server überlastet/Wartung |
504 |
Gateway Timeout |
Backend antwortet nicht rechtzeitig |
502 vs. 503 vs. 504
# 502 - Backend sendet ungültige Antwort
# Proxy/Load Balancer bekommt Fehler vom Backend
# 503 - Server kann nicht antworten
# Überlastet, Wartung, zu viele Verbindungen
Retry-After: 3600
# 504 - Backend antwortet nicht rechtzeitig
# Timeout beim Warten auf Backend
Status Codes für APIs
💡 Best Practice für REST APIs:
- GET: 200 (OK) oder 404 (nicht gefunden)
- POST: 201 (erstellt) oder 400/422 (Validierung)
- PUT/PATCH: 200 (aktualisiert) oder 404
- DELETE: 204 (gelöscht) oder 404
Error Response Format
// Empfohlen: Einheitliches Error-Format
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Ungültige Eingabedaten",
"details": [
{
"field": "email",
"message": "Ungültiges E-Mail-Format"
}
]
}
}
Weitere Informationen