HTTP ist der Schlüssel zur Kommunikation im Internet. Die Methoden des HTTP-Protokolls ermöglichen es Clients, Anfragen an Server zu senden, und Servern, Antworten zurückzugeben. Jede Website im World Wide Web verwendet HTTP-Anfragen. Daher ist es wichtig, sie zu verstehen.
Dieser Artikel behandelt das Konzept von HTTP-Requests, ihren Aufbau, gängige Methoden und praktische Beispiele. Das hilft dabei, die Funktionsweise des Webs besser zu verstehen.
Eine HTTP-Request ist eine Nachricht, in der ein Client – z. B. ein Webbrowser – den auf dem Server befindlichen Host um eine bestimmte Ressource bittet. Clients verwenden URLs in HTTP-Requests, die die Ressourcen angeben, auf die sie zugreifen möchten.
Jede HTTP-Request besteht aus drei Hauptkomponenten:
Request Line
Headers
Message Body
Die Request Line ist die erste Zeile einer HTTP-Anfrage. Sie initiiert eine Aktion auf dem Server. Die Request Line zeigt außerdem an, welche HTTP-Methode und welche HTTP-Version der Client verwendet.
Zusätzlich zur HTTP-Methode enthält sie eine URI oder URL.
Beispiel einer Request Line:
GET /index.html HTTP/1.1
Die Headers folgen direkt auf die Request Line. Sie liefern zusätzliche Informationen vom Client an den Server. Headers beinhalten Angaben wie Hostname, User-Agent, bevorzugte Sprache und mehr. Der Server nutzt diese Informationen, um Browser- und Betriebssystemversion des Clients zu identifizieren.
HTTP-Headers sind case-sensitive, bestehen aus einem Namen, gefolgt von einem Doppelpunkt und einem Wert.
Beispiel für HTTP-Request-Headers:
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Der Message Body einer HTTP-Request wird verwendet, um Daten an den Server zu senden. Er ist optional – nicht jede HTTP-Request enthält einen Body.
Ob er verwendet wird, hängt von der HTTP-Methode ab. Requests mit Body nutzen typischerweise POST, um Informationen zu übertragen. Der Server nutzt den Body, um die gesendeten Daten zu verarbeiten.
Eine HTTP-Request stellt eine Verbindung zwischen Client und Server her. Gründe dafür können sein:
eine Ressource abzurufen
neue Daten zu senden
bestehende Daten zu ändern
Daten zu löschen
Die wichtigsten und am häufigsten verwendeten Methoden sind:
Die häufigste Verwendung von HTTP ist das Abrufen von Daten vom Server. Beim Aufrufen einer Website sendet der Browser eine GET-Request, um den Inhalt zu laden.
Eigenschaften:
cacheable
safe
idempotent
GET ist nur zum Lesen gedacht — der Serverzustand wird nicht verändert.
Um Daten an den Server zu übermitteln (z. B. beim Absenden eines Formulars), wird POST verwendet.
Der Body enthält die Daten, die der Server verarbeiten soll.
Mehrere identische POST-Requests können zu mehreren Ressourcen auf dem Server führen.
PUT ähnelt POST, mit einem zentralen Unterschied:
POST = neue Daten senden
PUT = bestehende Daten aktualisieren
Der Client muss die vollständige neue Repräsentation im Body angeben. PUT ist idempotent – mehrere gleiche PUT-Requests führen zum gleichen Ergebnis.
DELETE weist den Server an, eine Ressource zu entfernen.
Wenn der Server erfolgreich löscht, sendet er eine Bestätigung zurück. Auch DELETE ist idempotent.
Wenn der Server auf eine HTTP-Request antwortet, nennt man das eine HTTP-Response.
Sie besteht ebenfalls aus drei Teilen:
Status Line
Headers
Message Body
Sie zeigt:
HTTP-Version
Statuscode
Statusnachricht
Sie enthalten Informationen wie:
Datum und Uhrzeit der Antwort
Content-Type
Server-Details
Caching-Regeln
Der Body enthält die eigentliche Antwort, z. B.:
HTML
JSON
XML
Bilder
Dateien
HTTP-Statuscodes zeigen an, wie der Server die Anfrage verarbeitet hat. Sie bestehen aus drei Ziffern. Die erste Ziffer beschreibt die Kategorie:
|
Code-Gruppe |
Bedeutung |
|
1xx |
Informational – Anfrage wird weiter verarbeitet |
|
2xx |
Success – erfolgreich verarbeitet |
|
3xx |
Redirect – weitere Schritte nötig |
|
4xx |
Client Error – Problem auf Client-Seite |
|
5xx |
Server Error – Fehler bei der Serververarbeitung |
Headers sind wichtig für die Kommunikation im Web.
Sie unterstützen:
Wichtig bei Servern mit mehreren Domains.
Headers wie Cache-Control oder Expires steuern, wie lange eine Ressource gespeichert bleibt.
Set-Cookie und Cookie verwalten Sessions und Benutzerzustände.
z. B. Authorization, Content-Security-Policy.
Headers vermitteln Erfolg oder Fehler der Anfrage.
Alle Beispiele verwenden Python und die Bibliothek requests.
import requests
response = requests.get("https://api.example.com/data",
params={"param1": "value1", "param2": "value2"})
print(response.status_code)
print(response.json())
import requests
url = "https://api.example.com/users"
data = {
"username": "newuser",
"email": "newuser@example.com",
"password": "securepassword"
}
response = requests.post(url, json=data)
if response.status_code == 201:
print("User created successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
import requests
url = "https://api.example.com/users/123"
data = {
"username": "updateduser",
"email": "updateduser@example.com"
}
response = requests.put(url, json=data)
if response.status_code == 200:
print("User updated successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
import requests
url = "https://api.example.com/users/123"
response = requests.delete(url)
if response.status_code == 204:
print("User deleted successfully.")
else:
print("Error:", response.status_code, response.text)
HTTP-Requests spielen eine zentrale Rolle bei Web-Interaktionen. Es ist entscheidend, die verschiedenen Methoden zu kennen und zu verstehen, wann sie eingesetzt werden. Die Wahl der passenden Methode erleichtert die Kommunikation zwischen Client und Server und steigert die Effizienz von Webanwendungen.