der REST einheitlichen Schnittstelle Zwang folgend, die HTTP PUT
und PATCH
Methoden, um die Standard-Semantik zu halten, so dass Sie tun können, dass entweder mit einem in der folgenden Art und Weise:
Mit PUT
, Kunden ein ganze hochladen neue Darstellung in der gewünschten Reihenfolge. Sie werden GET /api/v1/items
anfordern, ändern Sie die Reihenfolge, wie sie benötigen, und senden Sie sie zurück mit PUT /api/v1/items
.
Mit PATCH
können Clients ein Diff-Dokument senden, das die Auftragsänderung nach Bedarf ausführt. Sie können ein Format wie json-patch verwenden, und Clients führen die Änderung mit den move
Operation- und Arraypfaden durch.
Beachten Sie, dass es sich bei beiden nicht um Entwurfsmuster oder Best Practices handelt. Sie sind einfach wie die Methoden PUT
und PATCH
funktionieren sollen. Idealerweise sollte dies bei jeder RESTful-Anwendung funktionieren, die die Methoden GET
, PUT
und PATCH
korrekt für die Ressource an diesem URI implementiert, und das ist das Schöne an REST. Wenn Sie es richtig machen, müssen Sie es nur einmal tun und Kunden können für alle verallgemeinern. Zum Beispiel kann ein Kunde wählen, es mit kleinen Sammlungen PUT
Weg zu tun, und die PATCH
Weg für größere.
Sowohl Ihre Idee PATCH
mit einer id-Array zu verwenden, und die answerfrom @dit was darauf hindeutet, es zu tun mit PUT
ist nicht wirklich RESTful, weil sie mit der Standard-Semantik brechen auf: Ihre für kein Delta-Format, seine um Teilupdates mit PUT
durchzuführen. Beide Optionen können jedoch RESTful sein, wenn sie mit POST
ausgeführt werden. POST
ist die Methode für jede Aktion, die nicht durch das HTTP-Protokoll standardisiert ist, so dass Sie alles tun können, was Sie wollen, aber Sie müssen dokumentieren, wie genau es geht.
Also, es liegt an Ihnen. Wenn Sie sich Sorgen um RESTful machen und Ihre Anwendung langfristige Ziele verfolgt - ich spreche von Jahren oder sogar Jahrzehnten - würde ich sagen, dass Sie für eine einheitliche Implementierung der Methoden PUT
und PATCH
wie vorgeschlagen zuerst gehen. Wenn Sie einen einfachen Ansatz bevorzugen, verwenden Sie Ihre Idee oder dit mit POST
.
meinst du die Bestellung von einem Kunden zu ändern? eine Art Update-Vorgang? – dit
@dit, das ist. Ich baue eine REST-API. Ich brauche einen Endpunkt, um einem Client zu ermöglichen, die Reihenfolge einer kleinen Sammlung zu ändern, ohne die gesamte Sammlung erneut zu "setzen". –