HTTP-Anfragen verstehen: Aufbau, Methoden und Beispiele
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.
Was ist eine HTTP-Request? Link kopieren
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.
Bestandteile einer HTTP-Request Link kopieren
Jede HTTP-Request besteht aus drei Hauptkomponenten:
-
Request Line
-
Headers
-
Message Body
Request Line Link kopieren
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
Headers Link kopieren
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
Message Body Link kopieren
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.
Häufige HTTP-Methoden Link kopieren
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:
GET – Ressourcen abrufen Link kopieren
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.
POST – Daten senden Link kopieren
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 – Ressourcen aktualisieren Link kopieren
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 – Ressourcen löschen Link kopieren
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.
Was ist eine HTTP-Response? Link kopieren
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
Status Line Link kopieren
Sie zeigt:
-
HTTP-Version
-
Statuscode
-
Statusnachricht
Headers Link kopieren
Sie enthalten Informationen wie:
-
Datum und Uhrzeit der Antwort
-
Content-Type
-
Server-Details
-
Caching-Regeln
Body Link kopieren
Der Body enthält die eigentliche Antwort, z. B.:
-
HTML
-
JSON
-
XML
-
Bilder
-
Dateien
Statuscodes und ihre Bedeutung Link kopieren
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 |
HTTP-Headers und ihre Bedeutung Link kopieren
Headers sind wichtig für die Kommunikation im Web.
Sie unterstützen:
Host-Identifikation Link kopieren
Wichtig bei Servern mit mehreren Domains.
Caching Link kopieren
Headers wie Cache-Control oder Expires steuern, wie lange eine Ressource gespeichert bleibt.
Cookie-Management Link kopieren
Set-Cookie und Cookie verwalten Sessions und Benutzerzustände.
Sicherheit Link kopieren
z. B. Authorization, Content-Security-Policy.
Response-Kontrolle Link kopieren
Headers vermitteln Erfolg oder Fehler der Anfrage.
Praktische Beispiele für HTTP-Requests Link kopieren
Alle Beispiele verwenden Python und die Bibliothek requests.
GET Link kopieren
import requests
response = requests.get("https://api.example.com/data",
params={"param1": "value1", "param2": "value2"})
print(response.status_code)
print(response.json())
POST Link kopieren
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)
PUT Link kopieren
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)
DELETE Link kopieren
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)
Fazit Link kopieren
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.