1051 Stimmen

Was ist der Unterschied zwischen einer POST und einer PUT HTTP REQUEST?

Beide scheinen Daten an den Server im Körper zu senden, was unterscheidet sie also?

14voto

Dzenis H. Punkte 5945

Es sollte ziemlich einfach sein, das eine oder das andere zu verwenden, aber komplexe Formulierungen sind für viele von uns eine Quelle der Verwirrung.

Wann sie zu verwenden sind:

  • Utilice PUT wenn Sie eine einzelne Ressource, die bereits Teil der Ressourcensammlung ist, ändern möchten. PUT ersetzt die Ressource in ihrer Gesamtheit. Beispiel: PUT /resources/:resourceId

    Sidenote: Verwenden Sie PATCH wenn Sie einen Teil der Ressource aktualisieren möchten.


  • Utilice POST wenn Sie eine untergeordnete Ressource zu einer Ressourcensammlung hinzufügen möchten.
    Beispiel: POST => /resources

Generell:

  • In der Praxis sollten Sie immer PUT pour UPDATE Operationen.
  • Verwenden Sie immer POST pour CREATE Operationen.

Beispiel:

GET /Unternehmen/Berichte \=> Alle Berichte abrufen
GET /Unternehmen/Berichte/{id} \=> Abrufen der durch "id" identifizierten Berichtsinformationen
POST /Unternehmen/Berichte \=> Einen neuen Bericht erstellen
PUT /Unternehmen/Berichte/{id} \=> Aktualisierung der durch "id" gekennzeichneten Berichtsinformationen
PATCH /Unternehmen/Berichte/{id} \=> Aktualisieren eines Teils der durch "id" gekennzeichneten Berichtsinformationen
DELETE /Unternehmen/Berichte/{id} \=> Bericht nach "id" löschen

6voto

irfan Punkte 808

Der Unterschied zwischen POST und PUT besteht darin, dass PUT idempotent ist, d.h. der mehrfache Aufruf derselben PUT-Anfrage führt immer zum gleichen Ergebnis (d.h. keine Nebenwirkung), während der wiederholte Aufruf einer POST-Anfrage (zusätzliche) Nebeneffekte haben kann, da dieselbe Ressource mehrfach erstellt wird.

GET : Bei GET-Anfragen werden nur Daten abgerufen, d. h. es wird eine Darstellung der angegebenen Ressource angefordert.

POST : Er sendet Daten an den Server, um eine Ressource zu erstellen. Der Typ des Anforderungskörpers wird durch den Content-Type-Header angegeben. Sie verursacht oft eine Zustandsänderung oder Nebeneffekte auf dem Server

PUT : Erstellt eine neue Ressource oder ersetzt eine Darstellung der Zielressource durch die Nutzlast der Anfrage

PATCH : Sie wird verwendet, um partielle Änderungen an einer Ressource vorzunehmen

DELETE : Sie löscht die angegebene Ressource

TRACE : Er führt einen Test in Form einer Nachrichtenrückschleife entlang des Pfades zur Zielressource durch und bietet so einen nützlichen Debugging-Mechanismus

OPTIONS : Es wird verwendet, um die Kommunikationsoptionen für die Zielressource zu beschreiben. Der Client kann eine URL für die OPTIONS-Methode angeben, oder ein Sternchen (*), um auf den gesamten Server zu verweisen.

HEAD : Es wird eine Antwort angefordert, die mit der einer GET-Anfrage identisch ist, aber ohne den Antwortkörper

CONNECT : Stellt einen Tunnel zu dem durch die Zielressource identifizierten Server her, kann für den Zugriff auf Websites verwendet werden, die SSL (HTTPS) verwenden

5voto

Marinos An Punkte 7473

Es wäre erwähnenswert, dass POST unterliegt einigen gemeinsamen Cross-Site Request Forgery (CSRF)-Angriffe während PUT ist es nicht.

Die folgenden CSRF sind nicht möglich bei PUT bei Besuchen des Opfers attackersite.com .

Le site Wirkung des Angriffs は、その Opfer löscht unbeabsichtigt einen Benutzer nur weil es (das Opfer) angemeldet war als admin en target.site.com , vor dem Besuch attackersite.com :

Bösartiger Code auf attackersite.com :

Fall 1: Normale Anfrage. gespeichert target.site.com Die Cookies werden automatisch vom Browser gesendet: (Hinweis: Unterstützung PUT nur am Endpunkt, ist sicherer, weil es nicht unterstützt wird <form> Attributwert)

<!--deletes user with id 5-->
<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>

Fall 2: XHR-Anfrage. gespeichert target.site.com Die Cookies werden automatisch vom Browser gesendet: (Hinweis: Unterstützung PUT nur am Endpunkt, ist sicherer, weil ein Versuch, die PUT würde eine Preflight-Anfrage auslösen, deren Antwort verhindern würde, dass der Browser die deleteUser Seite)

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

MDN-Referenz : [Im Gegensatz zu "einfachen Anfragen" (siehe oben) --[[ Bedeutet: POST/GET/HEAD ]]-- sendet der Browser bei "Preflighted"-Anfragen zunächst eine HTTP-Anfrage mit der OPTIONS-Methode[ ]

Korsen in Aktion : [ ]Bestimmte Arten von Anfragen, wie DELETE oder PUT, müssen einen Schritt weiter gehen und den Server um Erlaubnis bitten, bevor die eigentliche Anfrage gestellt wird[ ]was als Preflight-Anfrage bezeichnet wird[ ]

5voto

Prateek Gupta Punkte 1872

Mit einfachen Worten kann man das sagen:

1.HTTP Get:Es wird verwendet, um ein oder mehrere Elemente zu erhalten

2.HTTP Post:Es wird verwendet, um einen Artikel zu erstellen

3. HTTP Put: Es wird verwendet, um ein Element zu aktualisieren.

4. HTTP-Patch: Er wird verwendet, um ein Element teilweise zu aktualisieren.

5. HTTP Delete: Wird verwendet, um ein Element zu löschen.

4voto

Melad Basilius Punkte 3134

REST-gerechte Nutzung

POST wird verwendet, um eine neue Ressource zu erstellen, und gibt dann die Ressource URI

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

Dieser Aufruf kann ein neues Buch erstellen und gibt dieses Buch zurück URI

Response ...THE-NEW-RESOURCE-URI/books/5

PUT wird verwendet, um eine Ressource zu ersetzen. Wenn diese Ressource bereits vorhanden ist, wird sie einfach aktualisiert, wenn sie nicht vorhanden ist, wird sie neu erstellt,

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

Mit PUT wir kennen den Ressourcenbezeichner, aber POST gibt den neuen Ressourcenbezeichner zurück

Nicht REST-gerechte Nutzung

POST wird verwendet, um eine Aktion auf der Serverseite auszulösen. Diese Aktion kann eine Ressource erstellen oder auch nicht, aber diese Aktion hat immer Nebeneffekte, da sie etwas auf dem Server verändert

PUT wird verwendet, um wörtliche Inhalte unter einer bestimmten URL zu platzieren oder zu ersetzen

Ein weiterer Unterschied zwischen REST-ful und nicht REST-ful Stilen

POST ist eine nicht-dempotente Operation: Sie verursacht einige Änderungen, wenn sie mehrmals mit derselben Anfrage ausgeführt wird.

PUT ist eine idempotente Operation: Sie hat keine Nebeneffekte, wenn sie mehrmals mit derselben Anfrage ausgeführt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X