HTTP-Verben sind wahrscheinlich eines der kryptischsten Dinge am HTTP-Protokoll. Sie existieren und es gibt viele von ihnen, aber warum existieren sie?
Rails scheint viele Verben unterstützen zu wollen und einige Verben hinzuzufügen, die von Webbrowsern nicht nativ unterstützt werden.
Hier ist eine vollständige Liste der http-Verben: http://annevankesteren.nl/2007/10/http-methods
Dort der HTTP-Patch aus dem offiziellen RFC: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
Die PATCH- Methode fordert an, dass eine Reihe von Änderungen, die in der Anforderungsentität beschrieben sind, auf die durch den Anforderungs-URI identifizierte Ressource angewendet werden. Die Änderungen werden in einem Format dargestellt, das als "Patch-Dokument" bezeichnet wird und durch einen Medientyp gekennzeichnet ist. Wenn der Request-URI zu einer bestehenden Ressource zeigt nicht, der Server KANN eine neue Ressource erstellen, auf dem Patch Dokumenttyp abhängig (ob es logisch eine Null - Ressource ändern kann) und Berechtigungen usw.
Der Unterschied zwischen den PUT und PATCH - Anfragen in der Art und Weise reflektiert der Server die beiliegende Einheit verarbeitet die Ressource durch den Anforderungs-URI identifiziert zu modifizieren. In einer PUT- Anforderung wird die eingeschlossene Entität als modifizierte Version der auf dem Ursprungsserver gespeicherten Ressource betrachtet, und der Client fordert an, dass die gespeicherte Version ersetzt wird. Bei PATCH enthält die beigefügte Entität jedoch eine Reihe von Anweisungen, die beschreiben, wie eine Ressource, die sich derzeit auf dem Ursprungsserver befindet, geändert werden sollte, um eine neue Version zu erstellen. Die PATCH
Methode wirkt sich auf die Ressource durch den identifizierten Request-URI , und es auch
MAYNebenwirkungen auf andere Ressourcen haben; Das heißt, durch die Anwendung eines PATCH können neue Ressourcen erstellt oder vorhandene geändert werden .
Soweit ich weiß, wird das PATCH- Verb nicht wie in Rails-Anwendungen verwendet ... Soweit ich weiß, sollte das RFC-Patch-Verb zum Senden von Patch-Anweisungen verwendet werden, beispielsweise wenn Sie einen Unterschied zwischen zwei Dateien machen. Anstatt die gesamte Entität erneut zu senden, senden Sie einen Patch, der viel kleiner sein kann als das erneute Senden der gesamten Entität.
Stellen Sie sich vor, Sie möchten eine große Datei bearbeiten. Sie bearbeiten 3 Zeilen. Anstatt die Datei zurückzusenden, müssen Sie nur das Diff senden. Auf der positiven Seite könnte das Senden einer Patch-Anfrage verwendet werden, um Dateien asynchron zusammenzuführen. Ein Versionskontrollsystem könnte möglicherweise das PATCH- Verb verwenden, um Code aus der Ferne zu aktualisieren.
Ein anderer möglicher Anwendungsfall hängt etwas mit NoSQL-Datenbanken zusammen. Es ist möglich, Dokumente zu speichern. Angenommen, wir verwenden eine JSON-Struktur, um Daten vom Server zum Client hin und her zu senden. Wenn wir ein Feld löschen wollten, könnten wir eine Syntax verwenden, die der in mongodb für $ unset ähnelt . Tatsächlich könnte die in Mongodb zum Aktualisieren von Dokumenten verwendete Methode wahrscheinlich zum Behandeln von JSON-Patches verwendet werden.
Nehmen Sie dieses Beispiel:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
Wir könnten so etwas haben:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
Zu guter Letzt können die Leute über HTTP-Verben sagen, was sie wollen. Es gibt nur eine Wahrheit, und die Wahrheit ist in den RFCs.
Ich habe ein paar Stunden mit Google verbracht und die Antwort hier gefunden
PUT => Wenn der Benutzer den gesamten Datensatz oder nur einen Teil davon aktualisieren kann , verwenden Sie PUT (Benutzer steuert, was aktualisiert wird).
PATCH => Wenn der Benutzer nur einen Teildatensatz aktualisieren kann , sagen Sie nur eine E-Mail-Adresse (die Anwendung steuert, was aktualisiert werden kann), verwenden Sie PATCH.
Warum
Patch
PUT
Methode benötigen mehr Bandbreite oder behandeln volle Ressourcen statt teilweise. SoPATCH
wurde eingeführt, um die Bandbreite zu reduzieren.Erklärung zu PATCH
PATCH
ist eine Methode, die weder sicher noch idempotent ist und vollständige und teilweise Aktualisierungen und Nebenwirkungen auf andere Ressourcen ermöglicht.PATCH
ist eine Methode, deren eingeschlossene Entität eine Reihe von Anweisungen enthält, die beschreiben, wie eine Ressource, die sich derzeit auf dem Ursprungsserver befindet, geändert werden sollte, um eine neue Version zu erstellen.Hier finden Sie weitere Informationen zu Put und Patch
quelle
PATCH
unterPOST
,PUT
usw. nicht „sicher“ ist, weil sie Ihre Daten modifizieren (hat Nebenwirkungen). Im Vergleich zuGET
,OPTIONS
usw. (sichere Methoden) , wo Sie die Endpunkte rufen mehrmals ohne irgendwelche Nebenwirkungen.put
Wenn ich meinen
first
Namen ändern möchte, sende eine Put- Anfrage für das Updateaber hier hat ein Problem ist die
put
Anfrage, dass ich, wenn ich eineput
Anfrage senden möchte , alle zwei Parameter senden muss, das heißt,first
undlast
daher ist es obligatorisch, alle Werte erneut zu senden
Patch :
patch
Anfrage sagt. Sendendata
Sie nur das, was Sie möchten,update
und es beeinflusst oder ändert keine anderen Daten.Sie müssen also nicht alle Werte erneut senden. Ich möchte nur meinen Vornamen aktualisieren, also muss ich nur den
first
Namen senden, um ihn zu aktualisieren.quelle
Hier ist der Unterschied zwischen POST-, PUT- und PATCH-Methoden eines HTTP-Protokolls.
POST
Eine HTTP.POST-Methode erstellt immer eine neue Ressource auf dem Server. Es handelt sich um eine nicht idempotente Anforderung, dh wenn der Benutzer zweimal auf dieselben Anforderungen trifft, wird eine weitere neue Ressource erstellt, wenn keine Einschränkung besteht.
Die http post-Methode ähnelt einer INSERT-Abfrage in SQL, bei der immer ein neuer Datensatz in der Datenbank erstellt wird.
Beispiel: Verwenden Sie die POST-Methode, um neue Benutzer, Bestellungen usw. zu speichern, wobei der Back-End-Server die Ressourcen-ID für die neue Ressource festlegt.
STELLEN
Bei der HTTP.PUT-Methode wird die Ressource zuerst anhand der URL identifiziert. Wenn sie vorhanden ist, wird sie aktualisiert, andernfalls wird eine neue Ressource erstellt. Wenn die Zielressource vorhanden ist, überschreibt sie diese Ressource mit einem vollständig neuen Text. Das heißt, die HTTP.PUT-Methode wird verwendet, um eine Ressource zu erstellen oder zu aktualisieren.
Die http put-Methode ähnelt einer MERGE-Abfrage in SQL, bei der ein Datensatz eingefügt oder aktualisiert wird, je nachdem, ob der angegebene Datensatz vorhanden ist.
Die PUT-Anforderung ist idempotent, dh wenn zweimal dieselben Anforderungen getroffen werden, wird die vorhandene Aufzeichnung aktualisiert (kein neuer Datensatz erstellt). Bei der PUT-Methode wird die Ressourcen-ID vom Client festgelegt und in der Anforderungs-URL angegeben.
Beispiel: Verwenden Sie die PUT-Methode, um vorhandene Benutzer oder Bestellungen zu aktualisieren.
PATCH
Eine HTTP.PATCH-Methode wird für teilweise Änderungen an einer Ressource verwendet, dh Delta-Aktualisierungen.
Die http-Patch-Methode ähnelt einer UPDATE-Abfrage in SQL, bei der nur ausgewählte Spalten und nicht die gesamte Zeile festgelegt oder aktualisiert werden.
Beispiel: Sie können die PATCH-Methode verwenden, um den Auftragsstatus zu aktualisieren.
PATCH / api / users / 40450236 / order / 10234557
Anfragetext: {Status: 'Geliefert'}
quelle
Beim Aktualisieren gibt es Einschränkungen bei PUT over PATCH. Bei Verwendung von PUT müssen wir alle Attribute angeben, auch wenn wir nur ein Attribut ändern möchten. Wenn wir jedoch die PATCH-Methode verwenden, können wir nur die Felder aktualisieren, die wir benötigen, und es müssen nicht alle Felder erwähnt werden. Mit PATCH können wir keinen Wert in einem Array ändern oder ein Attribut oder einen Array-Eintrag entfernen.
quelle
PUT und PATCH Methoden sind ähnlich in der Natur, aber es gibt einen entscheidenden Unterschied.
PUT - In der PUT- Anforderung wird die eingeschlossene Entität als die geänderte Version einer Ressource betrachtet, die sich auf dem Server befindet, und durch diese geänderte Entität ersetzt.
PATCH - In der PATCH- Anforderung enthält die beigefügte Entität die Anweisungen, wie die Entität, die sich auf dem Server befindet, geändert werden soll, um eine neuere Version zu erstellen.
quelle
Gemäß den HTTP-Bedingungen ist die
PUT
Anforderung genau wie eine Datenbankaktualisierungsanweisung.PUT
- wird zum Ändern vorhandener Ressourcen verwendet (zuvor POSTED). Andererseits wird diePATCH
Anforderung verwendet, um einen Teil der vorhandenen Ressource zu aktualisieren.Beispielsweise:
Kundendetails:
Wann möchten wir auf den gesamten Datensatz aktualisieren? wir müssen verwenden
Http
PUT
verb
.sowie:
Wenn wir dagegen nur den Teil des Datensatzes aktualisieren möchten, nicht den gesamten Datensatz, dann entscheiden Sie sich für
Http
PATCH
verb
. sowie:PUT VS POST:
Beim Benutzen
PUT
wir request verwenden, müssen wir alle Parameter wie firstName, lastName, email, phoneNumberpatch
senden , wobei as as In request nur die Parameter sendet, die wir aktualisieren möchten, ohne dass andere Daten beeinflusst oder geändert werden.Weitere Informationen finden Sie unter: https://fullstack-developer.academy/restful-api-design-post-vs-put-vs-patch/
quelle
Put- und Patch-Methode sind ähnlich. Aber in Schienen hat es eine andere Methode. Wenn wir den gesamten Datensatz aktualisieren / ersetzen wollen, müssen wir die Put-Methode verwenden. Wenn wir einen bestimmten Datensatz aktualisieren möchten, verwenden Sie die Patch-Methode.
quelle