Frage

Sie scheinen beide Daten an den Server im Inneren des Körpers zu senden, so was macht sie anders?

War es hilfreich?

Lösung

HTTP PUT:

PUT legt eine Datei oder eine Ressource zu einem bestimmten URI, und genau an den URI. Wenn es bereits eine Datei oder eine Ressource an, dass URI ersetzt PUT die Datei oder Ressource. Wenn es dort keine Datei oder eine Ressource ist, PUT erzeugt ein. PUT ist Idempotent , aber paradoxerweise PUT Antworten sind nicht zwischenspeicherbar .

HTTP 1.1 RFC Standort für PUT

HTTP POST:

POST sendet Daten an einen bestimmten URI und erwartet, dass die Ressource an, dass URI die Anfrage zu bearbeiten. Der Web-Server kann an dieser Stelle festzustellen, was mit den Daten im Rahmen der angegebenen Ressource zu tun. Die POST-Methode ist nicht Idempotent jedoch POST Antworten < em> sind Cache gespeichert werden, solange der Server den entsprechenden Cache-Control setzt und Verfällt Header.

Die offizielle HTTP RFC gibt POST zu sein:

  • Anmerkung der vorhandenen Ressourcen;
  • Posting eine Nachricht an einem schwarzen Brett, Newsgroups, Mailingliste,    oder ähnliche Gruppe von Artikeln;
  • Die Bereitstellung eines Blocks von Daten, wie zum Beispiel das Ergebnis einer Vorlage     Form, zu einem Datenverarbeitungsprozess;
  • eine Datenbank durch einen Anfügevorgang erweitern.

HTTP 1.1 RFC Lage für POST

Der Unterschied zwischen POST und PUT:

Die RFC selbst erklärt den Kern Unterschied:

  

Der grundlegende Unterschied zwischen dem   POST und PUT-Anfragen werden reflektiert in   die andere Bedeutung des   Request-URI. Der URI in einer POST-Anfrage   die Ressource identifiziert, wird   Greift die beiliegende Einheit. Das   Ressource möglicherweise ein Datenannehme   Prozess, ein Gateway zu einem anderen   Protokoll oder eine separate Einheit, die   nimmt Anmerkungen. Im Gegensatz dazu die   URI in einer PUT-Anforderung identifiziert die   Einheit mit dem Antrag beigelegt -   der User-Agent weiß, was URI   bestimmt und der Server muss nicht   versuchen, die Anforderung an einige anzuwenden   andere Ressource. Wenn der Server Wünsche   dass die Anforderung an einen angewendet werden,   verschiedene URI, muss es eine 301 (Dauerhaft verschoben) Antwort senden; der User-Agent kann dann machen   seine eigene Entscheidung darüber, ob oder nicht die Anforderung umgeleitet werden.

Mit der richtigen Methode, ohne Bezug zur Seite:

Ein Vorteil von REST ROA vs SOAP ist, dass, wenn HTTP REST ROA verwenden, ist es das ermutigt ordnungsgemäße Verwendung der HTTP-Verben / Methoden. So zum Beispiel, würden Sie nur PUT verwenden, wenn Sie eine Ressource an diesem genauen Standort erstellen möchten. Und Sie würden nie eine Ressource zu erstellen oder ändern.

verwenden GET

Andere Tipps

Nur Semantik.

Ein HTTP PUT sollte den Körper der Anfrage akzeptieren, und dann, dass in der momentan eingestellten durch die URI identifizierte Ressource.

Ein HTTP POST ist allgemeiner. Es soll eine Aktion auf dem Server starten. Diese Aktion könnte die Anfrage Körper an der Ressource durch den URI identifiziert zu speichern, oder es könnte eine andere URI sein, oder es könnte eine andere Aktion sein.

PUT ist wie ein Datei-Upload. Ein Put auf einen URI wirkt genau das URI. Eine POST an einen URI konnte überhaupt keine Wirkung hat.

geben Beispiele für REST-Stil Ressourcen:

„POST / Bücher“ mit einem Bündel von Buchinformationen könnte ein neues Buch erstellen, und reagieren mit dem neuen URL dieses Buch zu identifizieren. „/ Büchern / 5“

„PUT / Bücher / 5“ würde entweder ein neues Buch mit der ID von 5 erstellen oder ersetzen Sie das vorhandene Buch mit ID 5.

Nicht-Ressource-Stil kann POST für fast alles verwendet werden, die eine Nebenwirkung hat. Ein weiterer Unterschied besteht darin, dass PUT idempotent werden soll -. Mehrere PUTs der gleichen Daten auf die gleiche URL soll in Ordnung sein, wheras mehrere Beiträge können mehrere Objekte erstellen oder was auch immer es ist, POST Aktion tut

PUT wird als ein Verfahren zum „Hochladen“ Zeug zu einem bestimmten URI gemeint, oder überschreiben, was in diesem URI ohnehin schon ist.

POST, auf der anderen Seite, ist eine Möglichkeit, Daten im Zusammenhang mit einem bestimmten URI einreichen.

Siehe HTTP RFC

Soweit ich weiß, ist PUT meist für die Aktualisierung der Datensätze verwendet.

  1. POST - So erstellen Dokument oder eine andere Ressource

  2. PUT -. Um das erstellte Dokument oder eine andere Ressource zu aktualisieren

Aber in der Regel an diesem PUT klar sein ‚Ersetzt‘ die vorhandene Datensatz, wenn es da ist und erzeugt, wenn sie nicht da ..

Andere haben bereits gebucht hervorragende Antworten, ich wollte nur hinzufügen, dass mit den meisten Sprachen, Frameworks und Fällen verwenden Sie viel mit POST zu tun haben werden, viel häufiger als PUT. Bis zu dem Punkt, wo PUT, DELETE, etc. sind grundsätzlich Trivia-Fragen.

  1. GET : Daten vom Server abruft. Sollte keine andere Wirkung haben.
  2. POST : Sendet Daten an den Server für eine neue Einheit zu schaffen. Häufig verwendet, wenn eine Datei oder bei Einreichung eines Web-Formular hochladen.
  3. PUT :. Similiar zu POST, sondern eine vorhandene Einheit ersetzen
  4. PATCH :. Ähnlich wie bei PUT, sondern verwendet nur bestimmte Felder innerhalb eines bestehenden Unternehmens aktualisieren
  5. Löschen :. Entfernt Daten vom Server
  6. TRACE : Bietet eine Möglichkeit zu testen, welche Server empfängt. Es gibt einfach, was gesendet wurde.
  7. Optionen : Ermöglichen ein Client Informationen über die Anforderungsmethoden von einem Service unterstützt zu bekommen. Der entsprechende Antwort-Header ist mit unterstützten Methoden zulassen. Auch verwendet in CORS als Preflight-Anfrage-Server über das aktuelle Anforderungsverfahren zu informieren und sie bitten um benutzerdefinierte Header.
  8. HEAD : Kehrt nur die Antwort-Header
  9. .
  10. CONNECT : durch Browser verwendet, wenn es weiß, dass es zu einem Proxy redet und die endgültige URI beginnt mit https: //. Die Absicht von CONNECT ist End-to-End zu ermöglichen TLS-Sitzung verschlüsselt, so dass die Daten an einen Proxy-unlesbar.

Eine POST ist etwas von einer Fabrik Typ Methode. Sie enthalten Daten, mit ihm zu schaffen, was Sie wollen und was auch immer auf das andere Ende der weiß, was mit ihm zu tun. Ein PUT wird verwendet bei einer bestimmten URL vorhandene Daten zu aktualisieren, oder etwas Neues zu schaffen, wenn Sie wissen, was die URI sein wird, und es existiert nicht bereits (im Gegensatz zu einer POST gegenüber, die etwas schaffen und gibt eine URL es falls erforderlich).

Bitte beachten Sie: http://zacharyvoase.com/2009/07/03/http -Post-put-diff /

Ich habe ziemlich ärgern, in letzter Zeit durch ein weit verbreitetes Missverständnis von Web-Entwickler, dass ein POST verwendet wird, um eine Ressource zu erstellen, und ein PUT verwendet wird, um eine Aktualisierung / ändern.

Wenn Sie einen Blick auf Seite 55 von RFC 2616 ( „Hypertext Transfer Protocol - HTTP / 1.1“), Abschnitt 9.6 ( ‚PUT‘), Sie werden sehen, was PUT ist eigentlich für:

  

Die PUT-Methode fordert, dass die geschlossene Einheit unter dem mitgelieferten Request-URI gespeichert werden.

Es gibt auch einen praktischen Absatz den Unterschied zwischen POST zu erklären und PUT:

  

Der grundlegende Unterschied zwischen der POST und PUT-Anfragen in der unterschiedlichen Bedeutung des Request-URI reflektiert. Die URI in einer POST-Anforderung identifiziert die Ressource, die die eingeschlossene Einheit behandelt. Diese Ressource könnte ein Datenannehmeverfahren, ein Gateway zu einem anderen Protokoll oder eine separate Einheit sein, die Annotationen annimmt. Im Gegensatz dazu identifiziert die URI in einer PUT-Anforderung an das Unternehmen mit dem Antrag beigelegt - der User-Agent weiß, was URI bestimmt ist und der Server muss nicht versuchen, die Anforderung an eine anderen Ressource anwenden

.

Es erwähnt nicht, etwas über den Unterschied zwischen dem Update / erstellen, denn das ist nicht das, was es ist. Es geht um den Unterschied zwischen diesem:

obj.set_attribute(value) # A POST request.

Und dies:

obj.attribute = value # A PUT request.

Also bitte, um die Ausbreitung dieser weit verbreiteten Irrtum stoppen. Lesen Sie Ihre RFCs.

REST fragt Entwickler explizit HTTP-Methoden zu verwenden und in einer Weise, die mit der konsistent ist Protokolldefinition. Dieser grundlegende REST Bauprinzip stellt eine Eins-zu-Eins-Abbildung zwischen Erstellen, Lesen, Aktualisieren und Löschen (CRUD) Operationen und HTTP-Methoden. Demzufolge Abbildung:

• Um eine Ressource auf dem Server zu erstellen, verwenden POST.

• eine Ressource abzurufen, verwenden GET.

• Um den Zustand einer Ressource zu ändern oder zu aktualisieren, verwenden Sie PUT.

• Zum Entfernen oder eine Ressource zu löschen, verwenden DELETE.

Mehr Infos: RESTful Web-Services: Die Grundlagen von IBM

Der Unterschied zwischen POST und PUT ist, dass PUT idempotent ist, das heißt, die gleiche PUT-Anforderung ruft mehrmals wird immer das gleiche Ergebnis produzieren (dh keine Nebenwirkung), während auf der anderen Seite, eine POST-Anforderung ruft wiederholt haben (zusätzliche) Nebenwirkungen können die gleichen Ressourcen mehrfach zu schaffen.

GET: Anfragen unter Verwendung von GET nur Daten abrufen, das ist es eine Darstellung der angegebenen Ressource anfordert

POST: Es sendet Daten an den Server, eine Ressource zu erstellen. Die Art des Körpers des Antrags wird von dem Content-Type-Header angegeben. Es verursacht häufig eine Zustandsänderung oder Nebenwirkungen auf dem Server

PUT: Erstellt eine neue Ressource oder ersetzt eine Darstellung der Zielressource mit der Anforderung Nutzlast

PATCH: Es wird verwendet, teilweise Änderungen an einer Ressource anwenden

DELETE: Es löscht die angegebene Ressource

TRACE: Es führt eine Nachrichtenrückschleifentest entlang des Pfads zu der Zielressource, einen nützlichen Mechanismus Debuggen Bereitstellen

OPTIONS. Es wird verwendet, um die Kommunikationsmöglichkeiten für die Zielressource zu beschreiben, kann der Client eine URL für die OPTIONS-Methode angeben, oder ein Sternchen (*) für den gesamten Server beziehen

HEAD: Es fordert eine Antwort identisch mit einer GET-Anforderung, aber ohne den Antworttext

CONNECT: Er legt einen Tunnel an den Server durch die Zielressource identifiziert, kann den Zugriff auf Websites verwendet werden, die SSL (HTTPS)

Es wäre erwähnenswert, dass POST erwähnen unterliegt einige gemeinsamen CSRF-Attacken , während PUT nicht.

Die CSRF unten sind nicht möglich, mit PUT , wenn die Opfer Besuche attackersite.com:

Normale Anfrage (Cookies gesendet): (PUT ist kein unterstütztes Attributwert)

<form id="myform" method="post" action="http://target.site.com/deleteUser" >
    <input type="hidden" name="userId" value="5">
</form>
<script>document.createElement('form').submit.call(document.getElementById('myform'));</script>

XHR Anfrage (Cookies gesendet): (PUT auslösen würde eine Preflight-Anfrage)

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://target.site.com/deleteUser");
xhr.withCredentials=true;
xhr.send(["userId=5"]);

Einfach

POST wird verwendet, um eine Ressource und die Erträge der Ressource URI zu erstellen EX

REQUEST : POST ..../books
{
"book":"booName",
"author":"authorName"
}

Dieser Aufruf soll ein neues Buch erstellen und gibt das Buch URI

Response ..../books/5

PUT wird verwendet, um eine Ressource zu ersetzen, wenn die Ressource vorhanden ist dann einfach zu aktualisieren, aber wenn die Ressource nicht existiert, erstellen Sie es,

REQUEST : PUT ..../books/5
{
"book":"booName",
"author":"authorName"
}

mit PUT wir die Ressourcenkennung bieten, aber POST wird die neue Ressource Identifier zurückkehren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top