Beide scheinen Daten an den Server im Körper zu senden, was unterscheidet sie also?
Antworten
Zu viele Anzeigen?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
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
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[ ]
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.
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.