Brauchst du einen Experten, der dir bei deinem Symfony- oder PHP-Entwicklungsprojekt hilft? Fordere jetzt ein Angebot an


HTTP-Verben: Der ultimative Leitfaden

· Imen Ezzine · 5 Minuten zum Lesen
the surface of the earth seen from the space with city lights forming networks

Hier erklären wir dir die Grundlagen von GET, POST, PUT, DELETE und mehr. In diesem Artikel erfährst du alles über die Funktionsweise, die Anwendungsmöglichkeiten und die Sicherheitsauswirkungen.

Vor ein paar Tagen hat mir mein Cousin eine wichtige Frage gestellt. Er fängt gerade an, die faszinierende Welt der Computer zu erkunden. Er wollte wissen, was diese HTTP-Verben sind, über die wir immer sprechen, wie GET, POST, PUT, DELETE und andere. Seine Frage hat mich auf eine tolle Idee gebracht. Ich habe mir überlegt, diesen Artikel zu schreiben, um diese Konzepte auf einfache Weise zu erklären. Das wäre noch eine schöne Ergänzung zu meinen Artikeln zur Optimierung von PHP-Code und dem DRY-Prinzip. Ich habe mich bemüht, alle wichtigen HTTP-Verben in diesen Artikel aufzunehmen und jeweils konkrete Beispiele zu geben.

Was ist eigentlich ein HTTP-Verb?

Wenn du im Internet surfst, kommuniziert dein Browser über HTTP-Anfragen mit Servern. HTTP, also HyperText Transfer Protocol, ist ein Protokoll, das dafür sorgt, dass dein Browser und die Server, auf denen Websites gehostet werden, miteinander reden können. In der ersten Version von HTTP gab es nur das Verb "GET", mit dem man Ressourcen abrufen konnte. Die anderen Verben wurden erst später hinzugefügt. HTTP-Verben sind Anweisungen, die dein Browser an den Server schickt. Damit sagt er dem Server, was er mit einer Ressource machen soll. Das kann zum Beispiel eine Webseite, ein Bild oder Daten sein.

Hier findest du eine Übersicht über die wichtigsten HTTP-Verben: Es gibt da so einige Verben, die Du kennen solltest: GET, POST, PUT, DELETE und PATCH. Und dann gibt es noch ein paar weniger bekannte wie HEAD, OPTIONS, TRACE und CONNECT.

Was genau ist eigentlich eine idempotente Operation?

Bevor wir uns dann aber mal den Details der Verben widmen, ist es wichtig, dass wir zwei Schlüsselkonzepte in HTTP verstehen: das "sichere" Zeichen und die Idempotenz. Wenn du eine Anfrage sendest, die als "sicher" gilt, dann passiert nichts Schlimmes. Dein Server bleibt ganz cool und ruhig. GET-Anfragen sind zum Beispiel "sicher", weil sie Daten nur abrufen, ohne sie zu verändern. Wenn eine Operation immer das gleiche Ergebnis liefert, ist sie idempotent. Und das gilt, egal wie oft man sie ausführt. Mit anderen Worten: Wenn du dieselbe Anfrage mehrmals stellst, ändert sich der Zustand des Servers nach der ersten Anfrage nicht weiter. Das ist wichtig, um bestimmte Verben wie GET und PUT zu verstehen. GET und PUT sind idempotent, was POST nicht ist.

Wenn du das jetzt alles im Hinterkopf hast, schauen wir uns an, wie das auf jedes HTTP-Verb zutrifft. Wir erklären dir auch, warum und wann man das benutzt.

1. Das Verb GET: Informationen abrufen (idempotent)

Wann sollte es verwendet werden?

Es wird verwendet, wenn Sie Informationen abrufen möchten, ohne Änderungen am Server vorzunehmen. Dies ist die am häufigsten verwendete Methode für den Datenzugriff (z. B. zum Anzeigen einer Webseite oder zum Suchen nach Informationen in einer Datenbank).

Warum sollte es verwendet werden?

Da GET sicher und idempotent ist, sind alle sicheren Methoden notwendigerweise idempotent. Durch das Senden mehrerer GET-Anfragen ändern Sie die Daten nicht, was ideal zum Anzeigen von Ressourcen ist.

Beispiel:

Angenommen, Sie möchten die Produktliste auf einer E-Commerce-Website sehen. Sie senden eine GET-Anfrage an die URL „https://example.com/products“ und der Server gibt eine Liste aller verfügbaren Produkte zurück.

GET /products HTTP/2
Host: example.com

2. Das POST-Verb: Daten an den Server senden (nicht idempotent)

Wann verwenden?

Die Methode POST wird verwendet, um Daten an den Server zu senden, wenn Sie möchten, dass dieser eine neue Ressource (z. B. einen neuen Benutzer, Artikel oder ein neues Produkt) erstellt oder Informationen verarbeitet. Es wird häufig in Webformularen (z. B. bei der Benutzerregistrierung) oder zur Übermittlung nicht wiederkehrender Daten verwendet.

Gründe für die Verwendung

POST ist nicht idempotent, d. h., es erstellt bei jeder Verwendung eine neue Ressource oder ändert den Serverstatus. Im Gegensatz zu Verben wie PUT oder DELETE kann eine einzelne, mehrmals ausgeführte POST-Anfrage zu mehreren Änderungen führen, beispielsweise zum Erstellen mehrerer Instanzen einer Ressource oder zu kumulativen Änderungen.

Beispiel:

Sie möchten der Liste ein neues Produkt hinzufügen. Sie senden eine POST-Anfrage mit den Informationen zum neuen Produkt (wie Name, Preis usw.) an die URL „https://example.com/products“.

POST /products HTTP/2
Host: example.com
Content-Type: application/json
{
 "name":
 "New Article",
 "price":
 "29.9"
}

3. Das Verb PUT: Aktualisieren oder Ersetzen einer Ressource (idempotent)

Wann sollte es verwendet werden?

PUT wird verwendet, um eine vorhandene Ressource auf dem Server zu aktualisieren oder zu ersetzen oder eine neue Ressource zu erstellen, sofern diese noch nicht vorhanden ist. Es eignet sich, wenn Sie genau wissen, welche Ressource Sie ersetzen oder aktualisieren möchten.

Warum sollte es verwendet werden?

Weil PUT idempotent ist: Wenn Sie dieselbe PUT-Anforderung mehrmals senden, ändert sich der Status der Ressource nach der ersten Anforderung nicht. Dies ist ideal für vollständige Upgrades oder Ersetzungen.

Beispiel:

Angenommen, Sie möchten den Preis eines vorhandenen Produkts mit der ID 123 ändern. Sie senden eine PUT-Anfrage mit den neuen Informationen an die URL „https://example.com/products/123“.

PUT /products/123 HTTP/2
Host: example.com
Content-Type: application/json

{
  "name": "New Article",
  "price": 24.99
}

4. Das Verb DELETE: Eine Ressource löschen (idempotent)

In welcher Situation wird es verwendet?

DELETE wird verwendet, um eine bestimmte Ressource auf dem Server zu löschen. Wenn Sie eine bestimmte Ressource löschen möchten, ist dies das richtige Verb.

Warum ist das nützlich?

DELETE ist idempotent, das heißt, sobald eine Ressource gelöscht ist, hat die erneute Ausführung der Abfrage keine weiteren Auswirkungen.

Das bedeutet, dass die mehrmalige Wiederholung derselben Abfrage immer den gleichen Effekt hat. Wenn eine Ressource beispielsweise bereits gelöscht wurde, hat eine nachfolgende DELETE-Anforderung für dieselbe Ressource keine weiteren Auswirkungen.

Normalerweise gibt eine erfolgreiche DELETE-Anforderung den HTTP-Statuscode 204 (Kein Inhalt) zurück, um anzuzeigen, dass die Löschung durchgeführt wurde, ohne dass Inhalt zurückgegeben werden konnte.

Beispiel:

Sie möchten ein Produkt mit der ID 123 aus der Liste entfernen. Sie senden eine DELETE-Anfrage an die URL „https://example.com/products/123“.

DELETE /products/123 HTTP/2
Host: example.com

5. Das Verb PATCH: Eine Ressource teilweise ändern (nicht idempotent)

Nutzungskontexte

PATCH wird verwendet, wenn eine Ressource teilweise geändert werden soll, ohne sie vollständig zu ersetzen. Es ist besonders nützlich für kleinere Aktualisierungen bestimmter Daten.

Wann ist es relevant?

PATCH ist nicht immer idempotent, das heißt, die Wirkung einer PATCH-Anforderung kann je nach Häufigkeit ihrer Ausführung variieren. Daher ist es ideal für kleinere Anpassungen.

Beispiel

Angenommen, Sie möchten nur den Namen eines Produkts ändern, ohne den Preis anzupassen. In diesem Fall senden die eine PATCH-Anfrage an die URL „https://example.com/products/123“, die nur das zu ändernde Feld enthält.

PATCH /products/123 HTTP/2
Host: example.com
Content-Type: application/json

{
 "name":
 "Changed Name"
}

6. Das Verb HEAD: Abrufen der Antwortheader (idempotent)

Wann sollte es verwendet werden?

HEAD wird verwendet, wenn Sie nur die HTTP-Antwortheader ohne den eigentlichen Inhalt abrufen möchten. Dies ist ideal, um die Existenz einer Ressource zu überprüfen, ohne sie herunterladen zu müssen.

Warum es verwenden?

HEAD ist idempotent, d. h., jede HEAD-Anfrage führt zum gleichen Ergebnis, solange die Ressource vorhanden ist. Auf diese Weise können Sie schnell Informationen zu einer Ressource abrufen, beispielsweise deren Größe oder Typ.

Beispiel:

Sie möchten wissen, ob eine Datei auf dem Server vorhanden ist, ohne sie herunterzuladen. Sie senden eine HEAD-Anfrage an die URL „https://example.com/documentation.pdf“.

HEAD /documentation.pdf HTTP/2
Host: example.com

7. Das OPTIONS-Verb: Kennen Sie die unterstützten HTTP-Methoden (idempotent)

Welche Vorteile hat es?

Mit OPTIONS wird abgefragt, welche HTTP-Methoden (GET, POST usw.) für eine bestimmte Ressource unterstützt werden. Das Tool wird häufig für API-Tests und zur Konfiguration von Kommunikationsberechtigungen zwischen Client und Server verwendet.

Warum ist das nützlich?

OPTIONS ist idempotent und nützlich, wenn Sie herausfinden möchten, welche Aktionen zulässig sind, ohne die Ressource zu ändern.

Beispiel:

Sie möchten wissen, welche Aktionen Sie für eine Ressource ausführen können. Sie senden eine OPTIONS-Anfrage an die URL „https://example.com/products/123“.

OPTIONS /products/123 HTTP/2
Host: example.com

8. Das Verb TRACE: Debuggen Sie die von der Anfrage genommenen Pfade (idempotent)

Wann sollte es verwendet werden?

TRACE wird hauptsächlich zum Debuggen und zur Verfolgung des Pfads einer HTTP-Anforderung über mehrere Proxys oder Zwischenserver verwendet. Es zeigt die Anfrage so an, wie sie vom Server gesehen wird.

Warum sollte es verwendet werden?

TRACE ist idempotent und nützlich für die Diagnose von Netzwerkverbindungs- oder Kommunikationsproblemen.

Beispiel:

Um den Pfad einer Anfrage anzuzeigen, senden Sie eine TRACE-Anfrage an die URL „https://example.com“.

TRACE / HTTP/2
Host: example.com

9. Das Verb CONNECT: Eine Verbindung für einen sicheren Tunnel herstellen (idempotent)

Wann sollte es verwendet werden?

CONNECT wird verwendet, um einen sicheren Tunnel durch einen Proxy herzustellen – häufig für HTTPS-Verbindungen. Es wird hauptsächlich genutzt, wenn Sie über einen Proxy auf eine Remoteressource zugreifen.

Wann ist es relevant?

CONNECT ist idempotent und ermöglicht durch den Aufbau eines verschlüsselten Tunnels sichere Kommunikation.

Beispiel

Wenn eine sichere Verbindung über einen Proxy erforderlich ist, wird eine CONNECT-Anfrage gesendet.

CONNECT example.com:443 HTTP/2
Host: example.com

HTTP-Verbsicherheit

Die Sicherheit von HTTP-Verben hängt von ihrer korrekten Verwendung sowie von serverseitigen Konfigurationen ab. Hier sind einige wichtige Punkte:

  1. Schützen der vertraulichen Daten: Verwenden von HTTPS, um zwischen Client und Server übertragene Daten zu verschlüsseln, insbesondere bei Methoden, die Daten ändern (wie POST und PUT).

  2. Zugriffskontrolle: Stellen wir sicher, dass nur autorisierte Personen bestimmte HTTP-Methoden verwenden können, insbesondere für sensible Vorgänge wie DELETE und PUT.

  3. Angriffe verhindern: Implementieren Mechanismen zur Verhinderung von Injektions- und Cross-Site-Request-Forgery-(CSRF)-Angriffen durch Validierung der Eingabe und Verwendung von Sicherheitstoken. Obwohl POST-Anfragen für sensible Aktionen besser geeignet sind als GET, sind sie nicht grundsätzlich sicherer. Echter Schutz vor CSRF-Angriffen beruht auf der Verwendung von Mechanismen wie eindeutigen CSRF-Tokens und nicht auf der Wahl der HTTP-Methode. GET-Anfragen sollten jedoch niemals zum Ändern des Serverstatus verwendet werden, da sie zum Abrufen von Daten konzipiert sind und direkt über eine URL wiedergegeben werden können. Unter Berücksichtigung dieser Unterscheidung bleibt POST für kritische Aktionen vorzuziehen, um die Best Practices des HTTP-Protokolls widerzuspiegeln.

Zusammenfassung

Die HTTP-Verben GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE und CONNECT bilden das Herzstück der Interaktionen zwischen Ihrem Browser und Servern. Jedes dieser Verben spielt eine bestimmte Rolle bei der Manipulation von Daten und Ressourcen im Web. Daneben gibt es viele weitere, mehr oder weniger standardisierte HTTP-Verben wie LOCK und COPY, die spezifischere Anforderungen erfüllen. Wenn Sie diese Konzepte beherrschen, können Sie die Funktionsweise von Webanwendungen besser verstehen – sei es als Benutzer oder als Entwickler. Dank dieser umfassenden Erklärungen kann sich mein Cousin nun besser in der Computerwelt zurechtfinden, und ich hoffe, dass dieser Artikel auch anderen Anfängern zu mehr Klarheit verhelfen kann!

Hast du Lust, mit unserem Team aus PHP-Experten zu chatten?

Unser Expertenteam ist immer für dich da, wenn du Hilfe bei deinen PHP-Projekten brauchst, egal ob du Fragen hast oder Unterstützung bei etwas Praktischem brauchst.

Image