Zum Inhalt springen

HTTP-Methoden

HTTP (Hypertext Transfer Protocol) wurde entwickelt, um die Kommunikation zwischen Clients und dem Server zu ermöglichen. Es arbeitet nach dem Request-Response-Modell.

Es gibt zwei grundlegende HTTP-Methoden: GET und POST.

GET-Methode

Die GET-Methode fordert Daten von einer angegebenen Quelle an. GET-Anfragen können zwischengespeichert werden und bleiben im Browserverlauf. Sie können auch als Lesezeichen gespeichert werden.

Sie sollte niemals für sensible Daten verwendet werden. GET-Anfragen haben Längenbeschränkungen und sollten nur zum Abrufen von Daten verwendet werden.

DANGER

Die Query-Strings (Name/Wert-Paare) werden in der URL der GET-Anfrage gesendet.

Beispiel für ein Eingabefeld vom Typ text mit der get-Methode

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="get">
      First name:
      <input type="text" name="username" placeholder="Your name" />
      <br />
      <br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

POST-Methode

Die POST-Methode sendet Daten zur Verarbeitung an eine angegebene Quelle. Im Gegensatz zur GET-Methode werden POST-Anfragen nie zwischengespeichert, bleiben nicht im Browserverlauf und können nicht als Lesezeichen gespeichert werden. Außerdem unterliegen POST-Anfragen keinen URL-Längenbeschränkungen, obwohl Server in der Regel eigene Größenlimits für den Body erzwingen.

DANGER

Die Query-Strings (Name/Wert-Paare) werden im HTTP-Nachrichtentext der POST-Anfrage gesendet.

Beispiel für ein Formular mit der "post"-Methode

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post">
      First name:
      <input type="text" name="username" placeholder="Your name" />
      <br /><br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Vergleich der GET- und POST-Methoden

FeatureGETPOST
Zurück-Button/Neu ladenUnbedenklichDas Neuladen der Seite sendet die Formulardaten erneut. Der Browser muss in diesem Fall warnen, dass die Daten erneut gesendet werden.
Kann als Lesezeichen gespeichert werdenJaNein
Kann zwischengespeichert werdenJaNein
Kodierungstypapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded or multipart/form-data
VerlaufBleibt im Browserverlauf.Bleibt nicht im Browserverlauf.
Beschränkungen der DatenlängeBeim Senden von Daten fügt die GET-Methode die Daten zur URL hinzu. Die URL-Länge ist begrenzt (maximale URL-Länge beträgt 2048 Zeichen).Hat keine URL-Längenbeschränkungen, obwohl Server typischerweise Größenlimits für den Body erzwingen.
Beschränkung des DatentypsVor allem ASCII-Zeichen, wobei UTF-8 über Prozentkodierung unterstützt wird.Hat keine Beschränkungen. Binärdaten sind ebenfalls erlaubt.
SicherheitWeniger sicher als POST, da die gesendeten Daten Teil der URL sind.POST ist sicherer als GET, da die Daten weder in der URL noch im Browserverlauf sichtbar sind. Allerdings werden bei beiden Daten im Klartext über HTTP übertragen und für echte Sicherheit ist HTTPS erforderlich.
SichtbarkeitDaten sind für alle in der URL sichtbar.Zeigt die Daten nicht in der URL an.

Note HTML-Formulare unterstützen nativ nur die Methoden GET und POST. Um mit Formularen PUT, PATCH oder DELETE zu verwenden, benötigen Sie in der Regel JavaScript oder ein Backend-Routing, um diese Methoden zu simulieren.

Andere HTTP-Anfragemethoden

Neben den GET- und POST-Methoden gibt es noch einige andere Methoden. Siehe unten:

MethodDescription
HEADEs ist dasselbe wie die GET-Methode, gibt aber nur HTTP-Header zurück, nicht den Dokumentenrumpf.
OPTIONSGibt die vom Server unterstützten HTTP-Methoden zurück.
CONNECTWandelt die Anfrageverbindung in einen transparenten TCP/IP-Tunnel um.

Put-Methode

Die PUT-Methode wird hauptsächlich für Aktualisierungs-Operationen verwendet. Anders gesagt: Bei dieser Methode übergeben wir eine Ziel-Resource-URL zusammen mit dem Request-Body, der die Repräsentation der ursprünglichen Ressource enthält, die kürzlich aktualisiert wurde. Diese Methode kann auch zum Erzeugen einer Ressource verwendet werden, wenn die Ressourcen-ID vom Client und nicht vom Server gewählt wird.

Beachten Sie, dass PUT nicht als sichere Methode gilt, da sie auf dem Server einen Zustand erzeugen oder ändern kann, sie ist jedoch idempotent. Das bedeutet: Wenn Sie die Ressource mit dieser Methode erstellen oder ändern und dann denselben Aufruf ein zweites Mal ausführen, ist die Ressource weiterhin vorhanden und hat denselben Zustand wie beim ersten Aufruf.

Das folgende Beispiel fordert den Server auf, den angegebenen Entity-Body in method.py im Stammverzeichnis des Servers zu speichern:

HTTP-Methoden - Beispiel für die Put-Methode

http
PUT /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 160

Nachdem der angegebene Entity-Body in der Datei gespeichert wurde, sendet der Server die folgende Antwort:

HTTP-Methoden - Beispiel für die Put-Methode2

http
HTTP/1.1 201 Created
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 40
Connection: Closed

Patch-Methode

Die PATCH-Methode wird hauptsächlich für Änderungs-Operationen verwendet. Sie benötigt nicht die gesamte Ressource. Sie muss nur die Änderungen an der Ressource enthalten. Diese Methode ist weder idempotent noch sicher. Kollisionen zwischen zwei PATCH-Anfragen können sehr gefährlich sein, da einige Patch-Formate eine Operation von einem gemeinsamen Ausgangspunkt benötigen; andernfalls wird die Ressource beschädigt.

Delete-Methode

Wie Sie sich denken können, wird diese Methode verwendet, um eine durch eine URL identifizierte Ressource zu löschen. Diese Methode ist ebenfalls idempotent. Beim Löschen einer Ressource wird sie entfernt. Mehrfaches Aufrufen von DELETE führt zum selben Ergebnis — die Ressource bleibt entfernt.

Das folgende Beispiel fordert den Server auf, die Datei method.py im Stammverzeichnis des Servers zu löschen:

Delete-Methoden-Anfrage

http
DELETE /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-Alive

Nachdem die Datei gelöscht wurde, sendet der Server die folgende Antwort:

Delete-Methoden-Antwort

http
HTTP/1.1 200 OK
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 20
Connection: Closed

Practice

Welche der folgenden sind gültige HTTP-Methoden gemäß dem Inhalt der angegebenen URL?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.