Was ist der Unterschied zwischen PUT, POST und PATCH? [geschlossen]


282

Was ist der Unterschied zwischen PUT-, POST- und PATCH-Methoden im HTTP-Protokoll?



4
mögliches Duplikat von PUT vs POST in REST
Nirgendwo Mann

12
Die Verwendung von etwas anderem als GET / POST ist in modernen Web-APIs verrückt. Zu viele machen es. In den meisten modernen Apps identifizierte URIs sind KEINE Ressourcen, die ersetzt, aktualisiert usw. werden müssen. Sie sind keine Dokumente. Sie werden VERFAHREN genannt. Der URI selbst identifiziert selten eine tatsächliche Ressource außer der aufgerufenen Methode. Verwenden Sie daher GET zum Abfragen von Anforderungen und POSTs, wenn Sie JSON-Daten oder -Dateien im Hauptteil der Anforderung veröffentlichen müssen. IMO, alles andere versucht, veraltete Konzepte, die URIs und Operationen an statischen HTML-Dokumenten beinhalten, in eine neue Architektur zu integrieren, die nicht so aussieht.
Triynko

1
Alles gute Antworten. Ich wollte nur meine Antwort auf die Unterschiede
Zug

@Triynko Und die Verfahren, auf die Sie sich beziehen, umfassen das Erstellen , Löschen und Ändern von Ressourcen. Es gibt keinen besseren Weg, solche Ideen zu vermitteln, als RESTful zu sein. Warum nicht?
16онстантин Ван

Antworten:


200

Unterschied zwischen PUT, POST, GET, DELETE und PATCH IN HTTP-Verben:

Die am häufigsten verwendeten HTTP-Verben POST, GET, PUT, DELETE ähneln den CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) in der Datenbank. Wir geben diese HTTP-Verben im Großbuchstaben an . Das Folgende ist also der Vergleich zwischen ihnen.

  1. create - POST
  2. lesen - GET
  3. Update - PUT
  4. löschen - LÖSCHEN

PATCH: Sendet eine teilweise Änderung an einer Ressource. Wenn Sie nur ein Feld für die Ressource aktualisieren müssen, können Sie die PATCH-Methode verwenden.

Hinweis:
Da POST, PUT, DELETE den Inhalt ändert, ahmen die Tests mit Fiddler für die folgende URL nur die Aktualisierungen nach. Es wird nicht gelöscht oder geändert. Wir können nur die Statuscodes sehen, um zu überprüfen, ob Einfügungen, Aktualisierungen oder Löschungen auftreten.

URL: http://jsonplaceholder.typicode.com/posts/

1) GET:

GET ist die einfachste Art der HTTP-Anforderungsmethode. Diejenige, die Browser jedes Mal verwenden, wenn Sie auf einen Link klicken oder eine URL in die Adressleiste eingeben. Es weist den Server an, die durch die URL identifizierten Daten an den Client zu übertragen. Daten sollten aufgrund einer GET-Anforderung niemals auf der Serverseite geändert werden. In diesem Sinne ist eine GET-Anforderung schreibgeschützt.

Überprüfen mit Fiddler oder PostMan: Wir können Fiddler zum Überprüfen der Antwort verwenden. Öffnen Sie Fiddler und wählen Sie die Registerkarte Verfassen. Geben Sie das Verb und die URL wie unten gezeigt an und klicken Sie auf Ausführen, um die Antwort zu überprüfen.

Verb: GET

URL: http://jsonplaceholder.typicode.com/posts/

Antwort: Sie erhalten die Antwort wie folgt:

"userId": 1, "id": 1, "title": "sunt aut ...", "body": "quia et suscipit ..."

Im Pfad "happy" (oder ohne Fehler) gibt GET eine Darstellung in XML oder JSON und einen HTTP-Antwortcode von 200 (OK) zurück. In einem Fehlerfall wird meistens eine 404 (NICHT GEFUNDEN) oder 400 (BAD REQUEST) zurückgegeben.

2) POST:

Das POST-Verb wird hauptsächlich zum Erstellen neuer Ressourcen verwendet. Insbesondere werden damit untergeordnete Ressourcen erstellt. Das heißt, einer anderen (z. B. übergeordneten) Ressource untergeordnet.

Geben Sie nach erfolgreicher Erstellung den HTTP-Status 201 zurück und geben Sie einen Standortheader mit einem Link zu der neu erstellten Ressource mit dem HTTP-Status 201 zurück.

Überprüfen mit Fiddler oder PostMan: Wir können Fiddler zum Überprüfen der Antwort verwenden. Öffnen Sie Fiddler und wählen Sie die Registerkarte Verfassen. Geben Sie das Verb und die URL wie unten gezeigt an und klicken Sie auf Ausführen, um die Antwort zu überprüfen.

Verb: POST

URL: http://jsonplaceholder.typicode.com/posts/

Anfragetext:

Daten: {Titel: 'foo', Text: 'bar', Benutzer-ID: 1000, ID: 1000}

Antwort: Sie würden den Antwortcode als 201 erhalten.

Wenn Sie den eingefügten Datensatz mit Id = 1000 überprüfen möchten, ändern Sie das Verb in Get und verwenden Sie dieselbe URL und klicken Sie auf Execute.

Wie bereits erwähnt, erlaubt die obige URL nur Lesevorgänge (GET), wir können die aktualisierten Daten nicht in real lesen.

3) PUT:

PUT wird am häufigsten für Aktualisierungsfunktionen verwendet , wobei ein bekannter Ressourcen-URI mit dem Anforderungshauptteil PUT-verknüpft wird, der die neu aktualisierte Darstellung der ursprünglichen Ressource enthält.

Überprüfen mit Fiddler oder PostMan: Wir können Fiddler zum Überprüfen der Antwort verwenden. Öffnen Sie Fiddler und wählen Sie die Registerkarte Verfassen. Geben Sie das Verb und die URL wie unten gezeigt an und klicken Sie auf Ausführen, um die Antwort zu überprüfen.

Verb: PUT

URL: http://jsonplaceholder.typicode.com/posts/1

Anfragetext:

Daten: {Titel: 'foo', Text: 'bar', Benutzer-ID: 1, ID: 1}

Antwort: Bei erfolgreicher Aktualisierung werden 200 (oder 204, wenn kein Inhalt im Hauptteil zurückgegeben wird) von einem PUT zurückgegeben.

4) LÖSCHEN:

LÖSCHEN ist ziemlich einfach zu verstehen. Es wird verwendet, um eine durch einen URI identifizierte Ressource zu löschen .

Geben Sie nach erfolgreichem Löschen den HTTP-Status 200 (OK) zusammen mit einem Antworttext, möglicherweise der Darstellung des gelöschten Elements (erfordert häufig zu viel Bandbreite) oder einer umschlossenen Antwort zurück (siehe Rückgabewerte unten). Entweder das oder HTTP-Status 204 (KEIN INHALT) ohne Antworttext zurückgeben. Mit anderen Worten, ein 204-Status ohne Text oder die Antwort im JSEND-Stil und der HTTP-Status 200 sind die empfohlenen Antworten.

Überprüfen mit Fiddler oder PostMan: Wir können Fiddler zum Überprüfen der Antwort verwenden. Öffnen Sie Fiddler und wählen Sie die Registerkarte Verfassen. Geben Sie das Verb und die URL wie unten gezeigt an und klicken Sie auf Ausführen, um die Antwort zu überprüfen.

Verb: LÖSCHEN

URL: http://jsonplaceholder.typicode.com/posts/1

Antwort: Nach erfolgreichem Löschen wird der HTTP-Status 200 (OK) zusammen mit einem Antworttext zurückgegeben.

Beispiel zwischen PUT und PATCH

STELLEN

Wenn ich meinen Vornamen ändern musste, senden Sie eine PUT-Anfrage für das Update:

{"first": "Nazmul", "last": "hasan"} Um den Vornamen zu aktualisieren, müssen wir hier alle Parameter der Daten erneut senden.

PATCH:

Die Patch-Anfrage besagt, dass wir nur die Daten senden würden, die wir ändern müssen, ohne andere Teile der Daten zu ändern oder zu beeinflussen. Beispiel: Wenn wir nur den Vornamen aktualisieren müssen, übergeben wir nur den Vornamen.

Weitere Informationen finden Sie unter den folgenden Links:

https://jsonplaceholder.typicode.com/

https://github.com/typicode/jsonplaceholder#how-to

Was ist der Hauptunterschied zwischen PATCH- und PUT-Anforderung?

http://www.restapitutorial.com/lessons/httpmethods.html


62
PUT wird nicht aktualisiert. PUT ist das Erstellen oder Ersetzen der Entität am angegebenen URI. Gemäß der HTTP-Spezifikation ist PUT idempotent. Ja, es kann zum Aktualisieren verwendet werden, aber nur als Aktualisierung zu betrachten, ist nicht korrekt.
Maladon

2
Ich bin damit einverstanden, dass PUT nicht aktualisiert wird. Es kann mit Ersetzen zugeordnet werden, da beim Senden von PUT die vorhandene Ressource überschrieben wird. Wenn wir jedoch PATCH senden, werden nur die angegebenen Einträge ersetzt.
Atul Chavan

1
Da PUT auch zum Erstellen verwendet werden kann, bin ich mir nicht sicher, wie Ihre Antwort angibt, welche ich verwenden soll.
Rob P.

1
Diese Antwort ist viel besser, aber nicht mit PATCH zu vergleichen: stackoverflow.com/a/630475/2391795
Vadorequest


11

Die folgende Definition stammt aus dem Beispiel der realen Welt.

Beispielübersicht
Für alle Clientdaten speichern wir eine Kennung, um diese Clientdaten zu finden, und senden diese Kennung zur Referenz an diesen Client zurück.

  1. POST

    • Wenn der Client Daten ohne Kennung mithilfe der POST-Methode sendet, speichern wir diese und weisen eine neue Kennung zu.
    • Wenn der Client dieselben Daten erneut ohne Kennung mit der POST-Methode sendet , speichern wir sie und weisen eine neue Kennung zu.
    • Hinweis : Hier ist eine Vervielfältigung zulässig
  2. STELLEN

    • Wenn der Client Daten mit einer Kennung sendet, prüfen wir, ob diese Kennung vorhanden ist. Wenn der Bezeichner vorhanden ist, aktualisieren wir die Daten, andernfalls erstellen wir sie und weisen einen neuen Bezeichner zu.
  3. PATCH

    • Wenn der Client Daten mit einer Kennung sendet, prüfen wir, ob diese Kennung vorhanden ist. Wenn der Bezeichner vorhanden ist, werden die Daten aktualisiert, andernfalls wird eine Ausnahme ausgelöst.

Hinweis: Bei der Put- Methode wird keine Ausnahme ausgelöst, wenn kein Bezeichner gefunden wird. Bei der Patch- Methode wird jedoch eine Ausnahme ausgelöst , wenn der Bezeichner nicht gefunden wird.

Lassen Sie mich wissen, wenn Sie Fragen zu den oben genannten Themen haben.


8

Anfragetypen

  • create - POST
  • lesen - GET
  • erstellen oder aktualisieren - PUT
  • löschen - LÖSCHEN
  • Update - PATCH

GET / PUT ist idempotent PATCH kann manchmal idempotent sein

Was ist idempotent? Wenn wir die Abfrage mehrmals abfeuern, sollte dies das Ergebnis nicht beeinflussen. (Dieselbe Ausgabe. Angenommen, eine Kuh ist schwanger und wenn wir sie erneut züchten, kann sie nicht mehrmals schwanger sein.)

get : -

einfach bekommen. Holen Sie sich die Daten vom Server und zeigen Sie sie dem Benutzer

{
id:1
name:parth
email:x@x.com
}

post : -

Erstellen Sie eine neue Ressource in der Datenbank. Dies bedeutet, dass neue Daten hinzugefügt werden. Es ist nicht idempotent.

put : -

Neue Ressource erstellen, andernfalls zur vorhandenen hinzufügen. Idempotent, da jedes Mal dieselbe Ressource aktualisiert wird und die Ausgabe gleich ist. Ex. - Anfangsdaten

{
id:1
name:parth
email:x@x.com
}
  • Führen Sie put-localhost / 1 put email aus: ppp@ppp.com
{
id:1
email:ppp@ppp.com
}

patch

So kam nun die Patch-Anfrage PATCH kann manchmal idempotent sein

id:1
name:parth
email:x@x.com
}

Patchname: w

{
id:1
name:w
email:x@x.com
}
HTTP-Methode
GET ja
POST-Nr
PUT ja
PATCH nein *
OPTIONEN ja
KOPF ja
LÖSCHEN ja

Ressourcen: Idempotent - Was ist Idempotenz?


Was bedeutet "manchmal" idempotent wirklich? Was bestimmt die Idempotenz?
Polv

7

Hier ist eine einfache Beschreibung aller:

  • POST dient immer zum Erstellen einer Ressource (spielt keine Rolle, wenn sie dupliziert wurde).
  • PUT dient zum Überprüfen, ob eine Ressource vorhanden ist, zum Aktualisieren oder zum Erstellen einer neuen Ressource
  • PATCH dient immer zum Aktualisieren einer Ressource

5

Hauptunterschied zwischen PUT und PATCH Anfragen:

Angenommen, wir haben eine Ressource, die den Vor- und Nachnamen einer Person enthält.

Wenn wir den Vornamen ändern möchten, senden wir eine Put-Anfrage für das Update

{ "first": "Michael", "last": "Angelo" }

Obwohl wir hier nur den Vornamen ändern, müssen wir bei einer PUT-Anfrage beide Parameter zuerst und zuletzt senden.
Mit anderen Worten, es ist obligatorisch, alle Werte erneut zu senden, die volle Nutzlast.

Wenn wir jedoch eine PATCH-Anfrage senden, senden wir nur die Daten, die wir aktualisieren möchten. Mit anderen Worten, wir senden nur den Vornamen zum Aktualisieren, nicht den Nachnamen.


2

Ganz logisch ist der Unterschied zwischen PUT und PATCH beim Senden vollständiger und teilweiser Daten zum Ersetzen bzw. Aktualisieren. Allerdings nur ein paar Punkte wie unten

  1. Manchmal wird POST als für Updates von PUT zum Erstellen betrachtet
  2. Hat HTTP Mandate / Prüfungen für das Senden von vollständigen oder teilweisen Daten in PATCH? Andernfalls entspricht PATCH möglicherweise dem Update wie in PUT / POST

2

Denk darüber so...

POST - erstellen

PUT - ersetzen

PATCH - Update

Zu lesen bekommen

LÖSCHEN - löschen


2
Ich würde wahrscheinlich diese Unterscheidung hinzufügen : " PUT, wenn der Client die Adresse der resultierenden Ressource bestimmt, POST, wenn der Server dies tut. "
Ruffin

1

Einfachste Erklärung:

POST - Neuen Datensatz erstellen

PUT - Wenn der Datensatz vorhanden ist, aktualisieren Sie ihn anderweitig und erstellen Sie einen neuen Datensatz

PATCH - Update

Zu lesen bekommen

LÖSCHEN - löschen


Wie unterscheidet sich dies wesentlich von Kwames Antwort, die ungefähr zwei Wochen vor Ihrer veröffentlicht wurde?
Ruffin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.