Ausführlich, aber aus der HTTP 1.1-Methodenspezifikation unter http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html kopiert
9.3 GET
Die GET-Methode bedeutet, dass alle Informationen (in Form einer Entität) abgerufen werden, die durch den Request-URI identifiziert werden. Wenn sich der Anforderungs-URI auf einen Datenerzeugungsprozess bezieht, sind es die erzeugten Daten, die als Entität in der Antwort und nicht als Quelltext des Prozesses zurückgegeben werden sollen, es sei denn, dieser Text ist zufällig die Ausgabe des Prozesses.
Die Semantik der GET-Methode ändert sich in ein "bedingtes GET", wenn die Anforderungsnachricht ein Headerfeld "If-Modified-Since", "If-Unmodified-Since", "If-Match", "If-None-Match" oder "If-Range" enthält. Eine bedingte GET-Methode fordert an, dass die Entität nur unter den in den bedingten Headerfeldern beschriebenen Umständen übertragen wird. Die bedingte GET-Methode soll die unnötige Netzwerknutzung reduzieren, indem zwischengespeicherte Entitäten aktualisiert werden können, ohne dass mehrere Anforderungen erforderlich sind oder bereits vom Client gehaltene Daten übertragen werden.
Die Semantik der GET-Methode ändert sich in ein "partielles GET", wenn die Anforderungsnachricht ein Bereichskopffeld enthält. Ein Teil-GET fordert, dass nur ein Teil der Entität übertragen wird, wie in Abschnitt 14.35 beschrieben. Die partielle GET-Methode soll die unnötige Netzwerknutzung reduzieren, indem teilweise abgerufene Entitäten abgeschlossen werden können, ohne dass bereits vom Client gehaltene Daten übertragen werden.
Die Antwort auf eine GET-Anforderung kann nur dann zwischengespeichert werden, wenn sie die in Abschnitt 13 beschriebenen Anforderungen für das HTTP-Caching erfüllt.
In Abschnitt 15.1.3 finden Sie Sicherheitsaspekte bei Verwendung für Formulare.
9.5 POST
Die POST-Methode wird verwendet, um anzufordern, dass der Ursprungsserver die in der Anforderung enthaltene Entität als neuen Untergebenen der Ressource akzeptiert, die durch den Anforderungs-URI in der Anforderungszeile identifiziert wird. POST wurde entwickelt, um eine einheitliche Methode zu ermöglichen, die die folgenden Funktionen abdeckt:
- Annotation of existing resources;
- Posting a message to a bulletin board, newsgroup, mailing list,
or similar group of articles;
- Providing a block of data, such as the result of submitting a
form, to a data-handling process;
- Extending a database through an append operation.
Die tatsächliche Funktion der POST-Methode wird vom Server festgelegt und hängt normalerweise vom Request-URI ab. Die veröffentlichte Entität ist dieser URI auf dieselbe Weise untergeordnet, wie eine Datei einem Verzeichnis untergeordnet ist, das sie enthält, ein Nachrichtenartikel einer Newsgroup untergeordnet ist, in der sie veröffentlicht wurde, oder ein Datensatz einer Datenbank untergeordnet ist.
Die von der POST-Methode ausgeführte Aktion führt möglicherweise nicht zu einer Ressource, die durch einen URI identifiziert werden kann. In diesem Fall ist entweder 200 (OK) oder 204 (kein Inhalt) der geeignete Antwortstatus, je nachdem, ob die Antwort eine Entität enthält, die das Ergebnis beschreibt oder nicht.
Wenn eine Ressource auf dem Ursprungsserver erstellt wurde, MUSS die Antwort 201 (Erstellt) sein und eine Entität enthalten, die den Status der Anforderung beschreibt und auf die neue Ressource verweist, sowie einen Standortheader (siehe Abschnitt 14.30).
Antworten auf diese Methode können nicht zwischengespeichert werden, es sei denn, die Antwort enthält die entsprechenden Cache-Control- oder Expires-Headerfelder. Die Antwort 303 (siehe Andere) kann jedoch verwendet werden, um den Benutzeragenten anzuweisen, eine zwischengespeicherte Ressource abzurufen.
POST-Anforderungen MÜSSEN die in Abschnitt 8.2 festgelegten Anforderungen für die Nachrichtenübertragung erfüllen.
Siehe Abschnitt 15.1.3 für Sicherheitsüberlegungen.
9.6 PUT
Die PUT-Methode fordert an, dass die eingeschlossene Entität unter dem angegebenen Anforderungs-URI gespeichert wird. Wenn sich der Anforderungs-URI auf eine bereits vorhandene Ressource bezieht, MUSS die eingeschlossene Entität als modifizierte Version der auf dem Ursprungsserver befindlichen Entität betrachtet werden. Wenn der Anforderungs-URI nicht auf eine vorhandene Ressource verweist und dieser URI vom anfordernden Benutzeragenten als neue Ressource definiert werden kann, kann der Ursprungsserver die Ressource mit diesem URI erstellen. Wenn eine neue Ressource erstellt wird, MUSS der Ursprungsserver den Benutzeragenten über die Antwort 201 (Erstellt) informieren. Wenn eine vorhandene Ressource geändert wird, MÜSSEN entweder die Antwortcodes 200 (OK) oder 204 (Kein Inhalt) gesendet werden, um den erfolgreichen Abschluss der Anforderung anzuzeigen. Wenn die Ressource nicht mit dem Request-URI erstellt oder geändert werden konnte, Es sollte eine angemessene Fehlerantwort gegeben werden, die die Art des Problems widerspiegelt. Der Empfänger der Entität DARF KEINE Content- * (z. B. Content-Range) -Header ignorieren, die er nicht versteht oder implementiert, und MUSS in solchen Fällen eine 501-Antwort (nicht implementiert) zurückgeben.
Wenn die Anforderung einen Cache durchläuft und der Anforderungs-URI eine oder mehrere aktuell zwischengespeicherte Entitäten identifiziert, MÜSSEN diese Einträge als veraltet behandelt werden. Antworten auf diese Methode können nicht zwischengespeichert werden.
Der grundlegende Unterschied zwischen den POST- und PUT-Anforderungen spiegelt sich in der unterschiedlichen Bedeutung des Anforderungs-URI wider. Der URI in einer POST-Anforderung gibt die Ressource an, die die eingeschlossene Entität verarbeitet. Diese Ressource kann ein Datenakzeptanzprozess, ein Gateway zu einem anderen Protokoll oder eine separate Entität sein, die Anmerkungen akzeptiert. Im Gegensatz dazu identifiziert der URI in einer PUT-Anforderung die der Anforderung beigefügte Entität. Der Benutzeragent weiß, welcher URI beabsichtigt ist, und der Server darf NICHT versuchen, die Anforderung auf eine andere Ressource anzuwenden. Wenn der Server möchte, dass die Anforderung auf einen anderen URI angewendet wird,
es MUSS eine 301-Antwort (dauerhaft verschoben) senden; Der Benutzeragent kann dann selbst entscheiden, ob die Anforderung umgeleitet werden soll oder nicht.
Eine einzelne Ressource kann durch viele verschiedene URIs identifiziert werden. Beispielsweise kann ein Artikel einen URI zum Identifizieren "der aktuellen Version" haben, der von dem URI getrennt ist, der jede bestimmte Version identifiziert. In diesem Fall kann eine PUT-Anforderung für einen allgemeinen URI dazu führen, dass mehrere andere URIs vom Ursprungsserver definiert werden.
HTTP / 1.1 definiert nicht, wie sich eine PUT-Methode auf den Status eines Ursprungsservers auswirkt.
PUT-Anforderungen MÜSSEN die in Abschnitt 8.2 festgelegten Anforderungen für die Nachrichtenübertragung erfüllen.
Sofern für einen bestimmten Entitätsheader nicht anders angegeben, MÜSSEN die Entitätsheader in der PUT-Anforderung auf die vom PUT erstellte oder geänderte Ressource angewendet werden.
9.7 LÖSCHEN
Die DELETE-Methode fordert den Ursprungsserver auf, die durch den Request-URI identifizierte Ressource zu löschen. Diese Methode kann durch menschliches Eingreifen (oder auf andere Weise) auf dem Ursprungsserver überschrieben werden. Dem Client kann nicht garantiert werden, dass der Vorgang ausgeführt wurde, selbst wenn der vom Ursprungsserver zurückgegebene Statuscode anzeigt, dass die Aktion erfolgreich abgeschlossen wurde. Der Server sollte jedoch KEINEN Erfolg anzeigen, es sei denn, er beabsichtigt zum Zeitpunkt der Antwort, die Ressource zu löschen oder an einen unzugänglichen Ort zu verschieben.
Eine erfolgreiche Antwort sollte 200 (OK) sein, wenn die Antwort eine Entität enthält, die den Status beschreibt, 202 (Akzeptiert), wenn die Aktion noch nicht ausgeführt wurde, oder 204 (Kein Inhalt), wenn die Aktion ausgeführt wurde, die Antwort jedoch nicht enthält eine Entität.
Wenn die Anforderung einen Cache durchläuft und der Anforderungs-URI eine oder mehrere aktuell zwischengespeicherte Entitäten identifiziert, MÜSSEN diese Einträge als veraltet behandelt werden. Antworten auf diese Methode können nicht zwischengespeichert werden.