HTTP Methoden & Statuscodes

9 Methoden · 40+ Statuscodes
Die wichtigsten HTTP-Methoden und Statuscodes für Webentwicklung und APIs: 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 – GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS

CRUD · Idempotenz · Sicherheit
GET /api/users # Ressourcen abrufen POST /api/users # Neue Ressource erstellen PUT /api/users/42 # Ressource vollständig ersetzen DELETE /api/users/42 # Ressource löschen

HTTP-Methoden definieren die gewünschte Aktion auf der Ressource. Jede Methode hat spezifische Eigenschaften bezüglich Sicherheit (Safe) und Idempotenz.

Übersicht aller Methoden

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)
Beispiele
# GET – Benutzer abrufen
GET /api/users/42 HTTP/1.1
Host: api.example.com
# POST – Neuen Benutzer anlegen
POST /api/users HTTP/1.1
Content-Type: application/json
{ "name": "Anna", "email": "anna@example.com" }
# PUT – Benutzer vollständig aktualisieren
PUT /api/users/42 HTTP/1.1
Content-Type: application/json
{ "name": "Anna Schmidt", "email": "anna.schmidt@example.com" }
# DELETE – Benutzer löschen
DELETE /api/users/42 HTTP/1.1
# PATCH – Benutzer teilweise aktualisieren
PATCH /api/users/42 HTTP/1.1
{ "name": "Anna Schmidt" }
Tipp: Idempotente Methoden (GET, PUT, DELETE, HEAD, OPTIONS, TRACE) können mehrfach ausgeführt werden, ohne den Zustand zu ändern. POST ist nicht idempotent – jede Anfrage erzeugt eine neue Ressource.

1xx – Informational Informationen zur Anfrage

100 Continue · 101 Switching Protocols
100 Continue 101 Switching Protocols

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.

1xx Statuscodes

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)
Tipp: 101 Switching Protocols wird für WebSocket-Verbindungen verwendet. Der Client muss den Upgrade-Header setzen, der Server bestätigt mit 101.

2xx – Successful Erfolgreiche Antworten

200 OK · 201 Created · 204 No Content
200 OK 201 Created 204 No Content

2xx Statuscodes zeigen an, dass die Anfrage erfolgreich verarbeitet wurde. Sie sind die "guten" Antworten, die man erwarten möchte.

2xx Statuscodes

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
Beispiele
# 200 OK – Erfolgreiche GET-Anfrage
HTTP/1.1 200 OK
Content-Type: application/json
{ "id": 42, "name": "Anna", "email": "anna@example.com" }
# 201 Created – Ressource erstellt
HTTP/1.1 201 Created
Location: /api/users/43
# 204 No Content – Erfolgreich gelöscht
HTTP/1.1 204 No Content
Tipp: Bei 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 – Redirection Weiterleitungen

301 Moved Permanently · 302 Found · 304 Not Modified
301 Moved Permanently 302 Found 304 Not Modified

3xx Statuscodes zeigen an, dass der Client eine Weiterleitung durchführen muss – entweder dauerhaft, temporär oder basierend auf Caching-Informationen.

3xx Statuscodes

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
Beispiele
# 301 Permanent (HTTP → HTTPS)
HTTP/1.1 301 Moved Permanently
Location: https://example.com/neue-seite
# 302 Temporary (Wartungsseite)
HTTP/1.1 302 Found
Location: /maintenance.html
# 304 Not Modified (Caching)
HTTP/1.1 304 Not Modified
ETag: "abc123"
Tipp: Für SEO-Zwecke verwenden Sie 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 – Client Errors Fehler auf Client-Seite

400 Bad Request · 401 Unauthorized · 403 Forbidden · 404 Not Found
400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found

4xx Statuscodes zeigen an, dass der Client einen Fehler gemacht hat – z.B. eine falsche URL, fehlende Berechtigung oder ungültige Daten.

4xx Statuscodes

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
Beispiele
# 400 Bad Request – Ungültige JSON-Syntax
HTTP/1.1 400 Bad Request
Content-Type: application/json
{ "error": "Invalid JSON: unexpected token at position 10" }
# 401 Unauthorized – Nicht eingeloggt
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer
# 403 Forbidden – Keine Berechtigung
HTTP/1.1 403 Forbidden
# 404 Not Found – Ressource existiert nicht
HTTP/1.1 404 Not Found
# 429 Too Many Requests – Ratenlimit überschritten
HTTP/1.1 429 Too Many Requests
Retry-After: 60
Tipp: 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 – Server Errors Fehler auf Server-Seite

500 Internal Server Error · 502 Bad Gateway · 503 Service Unavailable
500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout

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.

5xx Statuscodes

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)
Beispiele
# 500 Internal Server Error – Datenbankfehler
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
{ "error": "Database connection failed" }
# 502 Bad Gateway – Nginx ↔ Node.js Problem
HTTP/1.1 502 Bad Gateway
# 503 Service Unavailable – Wartungsarbeiten
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
# 504 Gateway Timeout – Backend antwortet nicht
HTTP/1.1 504 Gateway Timeout
Tipp: 503 Service Unavailable sollte mit einem Retry-After-Header versehen werden, der dem Client mitteilt, wann der Service voraussichtlich wieder verfügbar ist.

HTTP Statuscode-Klassen im Überblick

1xx Informational
Anfrage empfangen, Fortsetzung erwartet
2xx Success
Anfrage erfolgreich
3xx Redirection
Weiterleitung erforderlich
4xx Client Error
Fehler auf Client-Seite
5xx Server Error
Fehler auf Server-Seite
REST Methoden + Statuscodes
GET, POST, PUT, DELETE

Quick Summary

GET
Abrufen
200
OK
301
Weiterleitung
404
Nicht gefunden
500
Server-Fehler
101
Protocol Switch
GET /api/users → 200 OK · POST /api/users → 201 Created · DELETE /api/users/42 → 204 No Content