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.