Beide scheinen Daten an den Server im Körper zu senden, was unterscheidet sie also?
Antworten
Zu viele Anzeigen?HTTP PUT:
PUT stellt eine Datei oder Ressource unter einem bestimmten URI bereit, und zwar genau unter diesem URI. Wenn es bereits eine Datei oder Ressource unter diesem URI gibt, ersetzt PUT diese Datei oder Ressource. Wenn es dort keine Datei oder Ressource gibt, erstellt PUT eine. PUT ist idempotent aber paradoxerweise sind PUT-Antworten nicht zwischenspeicherbar.
HTTP POST:
POST sendet Daten an eine bestimmte URI und erwartet, dass die Ressource an dieser URI die Anfrage bearbeitet. Der Webserver kann zu diesem Zeitpunkt bestimmen, was mit den Daten im Kontext der angegebenen Ressource geschehen soll. Die POST-Methode ist nicht idempotent jedoch POST-Antworten sind cachefähig, solange der Server die entsprechenden Cache-Control- und Expires-Header setzt.
Der offizielle HTTP RFC spezifiziert POST als:
- Beschriftung der vorhandenen Ressourcen;
- Senden einer Nachricht an ein schwarzes Brett, eine Newsgroup oder eine Mailingliste, oder eine ähnliche Gruppe von Artikeln;
- Bereitstellung eines Datenblocks, z. B. des Ergebnisses der Übermittlung eines Formulars, an einen Datenverarbeitungsprozess;
- Erweitern einer Datenbank durch eine Anfügeoperation.
HTTP 1.1 RFC-Standort für POST
Unterschied zwischen POST und PUT:
Der RFC selbst erklärt den Hauptunterschied:
Der grundlegende Unterschied zwischen der POST- und PUT-Anfragen spiegelt sich in der unterschiedlichen Bedeutung der Anfrage-URI wider. Die URI in einer POST-Anfrage identifiziert die Ressource, die die die eingeschlossene Entität bearbeitet. Diese Ressource kann ein datenannehmender Prozess, ein Gateway zu einem anderen Protokoll sein, oder eine separate Entität, die Annotationen akzeptiert. Im Gegensatz dazu kann der URI in einer PUT-Anfrage hingegen identifiziert die Entität, die der Anfrage beigefügt ist -- der User Agent weiß, welcher URI gemeint ist gemeint ist und der Server MUSS NICHT versuchen, die Anfrage auf eine andere andere Ressource anzuwenden. Wenn der Server wünscht, dass dass die Anfrage auf eine anderen URI zugewiesen werden soll, MUSS er eine 301-Antwort (Moved Permanently) senden; der Benutzer-Agent KANN dann Der User-Agent kann dann selbst entscheiden, ob er die Anfrage weiterleitet oder nicht.
Zusätzlich, und etwas prägnanter, RFC 7231 Abschnitt 4.3.4 PUT heißt es (Hervorhebung hinzugefügt),
4.3.4. PUT
Die PUT-Methode verlangt, dass der Zustand der Zielressource
created
oreplaced
mit dem Zustand, der durch die Darstellung in der Nutzlast der Anforderungsnachricht definiert ist.
Mit der richtigen Methode, ohne Bezug zu den anderen:
Ein Vorteil der REST ROA gegenüber SOAP ist, dass bei der Verwendung von HTTP REST ROA die korrekte Verwendung der HTTP-Verben/Methoden gefördert wird. So würden Sie z. B. PUT nur dann verwenden, wenn Sie eine Ressource an genau dieser Stelle erstellen möchten. Und Sie würden niemals GET verwenden, um eine Ressource zu erstellen oder zu ändern.
Nur Semantik.
Ein HTTP PUT
soll den Text der Anfrage entgegennehmen und ihn dann in der durch den URI identifizierten Ressource speichern.
Ein HTTP POST
ist allgemeiner. Sie soll eine Aktion auf dem Server auslösen. Diese Aktion könnte darin bestehen, den Request Body bei der durch den URI identifizierten Ressource zu speichern, oder es könnte ein anderer URI sein, oder es könnte eine andere Aktion sein.
PUT ist wie einen Datei-Upload. Ein Put an einen URI betrifft genau diesen URI. Ein POST an einen URI könnte überhaupt eine Wirkung haben.
Beispiele für REST-ähnliche Ressourcen:
POST /books
mit einer Reihe von Buchinformationen könnte ein neues Buch erstellen und mit der neuen URL antworten, die dieses Buch identifiziert: /books/5
.
PUT /books/5
müsste entweder ein neues Buch mit der ID 5 erstellen oder das vorhandene Buch mit der ID 5 ersetzen.
Im Nicht-Ressourcen-Stil, POST
kann für so ziemlich alles verwendet werden, was eine Nebenwirkung hat. Ein weiterer Unterschied ist, dass PUT
sollte idempotent sein: mehrere PUT
s der gleichen Daten an dieselbe URL sollte in Ordnung sein, während mehrere POST
s können mehrere Objekte oder was auch immer Ihr Ziel ist, erzeugen. POST
Aktion tut.
- GET : Ruft Daten vom Server ab. Sollte keine anderen Auswirkungen haben.
- PUT : Ersetzt die Zielressource durch die Nutzlast der Anfrage. Kann zur Aktualisierung oder Erstellung einer neuen Ressource verwendet werden.
- PATCH : Ähnlich wie PUT, aber nur zur Aktualisierung bestimmter Felder innerhalb einer bestehenden Ressource.
- POST : Führt eine ressourcenspezifische Verarbeitung der Nutzlast durch. Kann für verschiedene Aktionen verwendet werden, darunter das Erstellen einer neuen Ressource, das Hochladen einer Datei oder das Übermitteln eines Webformulars.
- DELETE : Entfernt Daten vom Server.
- TRACE : Bietet eine Möglichkeit zu testen, was der Server empfängt. Er gibt einfach zurück, was gesendet wurde.
- OPTIONEN : Ermöglicht es einem Client, Informationen über die von einem Dienst unterstützten Anfragemethoden zu erhalten. Der entsprechende Antwort-Header ist Allow mit unterstützten Methoden. Wird auch in CORS als Preflight-Anfrage verwendet, um den Server über die aktuelle Anfragemethode zu informieren und nach benutzerdefinierten Headern zu fragen.
- KOPF : Gibt nur die Antwort-Header zurück.
- CONNECT : Wird vom Browser verwendet, wenn er weiß, dass er mit einem Proxy spricht und der endgültige URI mit
https://
. CONNECT soll verschlüsselte TLS-Sitzungen von Ende zu Ende ermöglichen, so dass die Daten für einen Proxy unlesbar sind.
PUT ist eine Methode zum "Hochladen" von Inhalten in einen bestimmten URI oder zum Überschreiben von Inhalten, die sich bereits in diesem URI befinden.
POST hingegen ist eine Methode zur Übermittlung von RELATED-Daten an einen bestimmten URI.
Siehe der HTTP-RFC
- See previous answers
- Weitere Antworten anzeigen