GET ·
POST ·
PUT ·
DELETE ·
200 OK ·
404 Not Found ·
500 Internal Server Error
HTTP-Methoden definieren die Aktion, die auf einer Ressource ausgeführt werden soll. Statuscodes geben das Ergebnis der Anfrage zurück – von erfolgreichen Antworten bis zu Fehlern und Weiterleitungen.
HTTP-Methoden definieren die gewünschte Aktion auf der Ressource. Jede Methode hat spezifische Eigenschaften bezüglich Sicherheit (Safe) und Idempotenz.
| Methode | Beschreibung | Safe | Idempotent |
|---|---|---|---|
| GET | Ressource abrufen (Daten lesen) | ✅ | ✅ |
| HEAD | Nur Header abrufen (wie GET, ohne Body) | ✅ | ✅ |
| OPTIONS | Unterstützte Methoden abfragen (CORS) | ✅ | ✅ |
| POST | Neue Ressource erstellen | ❌ | ❌ |
| PUT | Ressource vollständig ersetzen | ❌ | ✅ |
| PATCH | Ressource teilweise aktualisieren | ❌ | ❌ |
| DELETE | Ressource löschen | ❌ | ✅ |
| TRACE | Echo der Anfrage (Debugging) | ✅ | ✅ |
| CONNECT | Tunnel für SSL/TLS (Proxy) | ❌ | ❌ |
1xx Statuscodes sind informative Antworten, die anzeigen, dass die Anfrage empfangen wurde und der Prozess fortgesetzt werden kann. Sie werden selten direkt im Client-Code behandelt.
| Code | Name | Beschreibung |
|---|---|---|
| 100 | Continue | Bisherige Anfrage okay, Client kann Body senden |
| 101 | Switching Protocols | Wechsel zu anderem Protokoll (z.B. WebSocket) |
| 102 | Processing | Anfrage wird bearbeitet (WebDAV) |
| 103 | Early Hints | Hinweise für Preloading (HTTP/2) |
101 Switching Protocols wird für WebSocket-Verbindungen verwendet. Der Client muss den Upgrade-Header setzen, der Server bestätigt mit 101.
2xx Statuscodes zeigen an, dass die Anfrage erfolgreich verarbeitet wurde. Sie sind die "guten" Antworten, die man erwarten möchte.
| Code | Name | Beschreibung | Typische Verwendung |
|---|---|---|---|
| 200 | OK | Erfolgreiche Anfrage | GET, PUT, PATCH |
| 201 | Created | Ressource wurde erstellt | POST (neue Ressource) |
| 202 | Accepted | Anfrage angenommen, aber noch nicht verarbeitet | Asynchrone Operationen |
| 203 | Non-Authoritative Information | Information von Proxy (nicht originär) | Proxy-Antworten |
| 204 | No Content | Erfolgreich, aber kein Body | DELETE, PATCH (ohne Body) |
| 205 | Reset Content | Client soll Formular zurücksetzen | Nach Formular-Submission |
| 206 | Partial Content | Teil der Ressource (Range-Header) | Download-Resume, Streaming |
POST sollte 201 Created mit dem Location-Header zurückgegeben werden, der die neue Ressource identifiziert. Bei DELETE ist 204 No Content die übliche Antwort.
3xx Statuscodes zeigen an, dass der Client eine Weiterleitung durchführen muss – entweder dauerhaft, temporär oder basierend auf Caching-Informationen.
| Code | Name | Beschreibung | Typische Verwendung |
|---|---|---|---|
| 300 | Multiple Choices | Mehrere Optionen für die Ressource | Selten verwendet |
| 301 | Moved Permanently | Ressource dauerhaft umgezogen | SEO, Domain-Umzug, HTTPS |
| 302 | Found (Temporarily Moved) | Ressource temporär an anderer Stelle | Temporäre Weiterleitungen |
| 303 | See Other | Andere Ressource aufrufen (POST → GET) | Nach Formular-Submission |
| 304 | Not Modified | Ressource unverändert (Caching) | If-Modified-Since, ETag |
| 307 | Temporary Redirect | Temporäre Weiterleitung (Methode bleibt) | POST bleibt POST |
| 308 | Permanent Redirect | Permanente Weiterleitung (Methode bleibt) | POST bleibt POST |
301 für dauerhafte Umzüge und 302 für temporäre Weiterleitungen. 307 und 308 bewahren die HTTP-Methode (z.B. POST bleibt POST).
4xx Statuscodes zeigen an, dass der Client einen Fehler gemacht hat – z.B. eine falsche URL, fehlende Berechtigung oder ungültige Daten.
| Code | Name | Beschreibung |
|---|---|---|
| 400 | Bad Request | Ungültige Anfrage (Syntax, Validierung) |
| 401 | Unauthorized | Authentifizierung erforderlich (nicht eingeloggt) |
| 403 | Forbidden | Keine Berechtigung (eingeloggt, aber keine Rechte) |
| 404 | Not Found | Ressource nicht gefunden |
| 405 | Method Not Allowed | HTTP-Methode nicht erlaubt |
| 406 | Not Acceptable | Inhaltstyp nicht akzeptabel (Accept-Header) |
| 408 | Request Timeout | Anfrage-Timeout |
| 409 | Conflict | Konflikt (z.B. veraltete Version) |
| 410 | Gone | Ressource dauerhaft nicht mehr verfügbar |
| 413 | Payload Too Large | Anfrage zu groß |
| 415 | Unsupported Media Type | Medientyp nicht unterstützt |
| 422 | Unprocessable Entity | Validierungsfehler (WebDAV, REST API) |
| 429 | Too Many Requests | Ratenlimit überschritten |
401 Unauthorized bedeutet, dass der Client sich authentifizieren muss. 403 Forbidden bedeutet, dass der Client eingeloggt ist, aber keine Berechtigung für die Aktion hat. Der Unterschied ist wichtig für die Fehlerbehandlung.
5xx Statuscodes zeigen an, dass der Server einen Fehler hat oder die Anfrage nicht verarbeiten kann. Diese Fehler liegen in der Verantwortung des Server-Betreibers.
| Code | Name | Beschreibung |
|---|---|---|
| 500 | Internal Server Error | Allgemeiner Server-Fehler (z.B. Exception) |
| 501 | Not Implemented | Methode nicht implementiert |
| 502 | Bad Gateway | Ungültige Antwort von Upstream-Server (Proxy) |
| 503 | Service Unavailable | Service temporär nicht verfügbar (Überlastung, Wartung) |
| 504 | Gateway Timeout | Timeout von Upstream-Server |
| 505 | HTTP Version Not Supported | HTTP-Version nicht unterstützt |
| 507 | Insufficient Storage | Speicherplatz unzureichend (WebDAV) |
503 Service Unavailable sollte mit einem Retry-After-Header versehen werden, der dem Client mitteilt, wann der Service voraussichtlich wieder verfügbar ist.
GET
200
301
404
500
101
GET /api/users → 200 OK ·
POST /api/users → 201 Created ·
DELETE /api/users/42 → 204 No Content