Ich habe ein REST-URI für eine Liste von Ressourcen, so etwas wie:Wie eine REST-Ressource-Sammlung aktualisieren
http://foo.com/group/users
Jeder dieses Benutzers hat eine Sequenznummer und ich möchte eine Art und Weise entlarven diese Werte neu zu nummerieren für alle Benutzer in der Sammlung und diese Änderung für jeden verfügbar machen, der auf die Liste zugreift. Da dies eine Aktion auf die Sammlung als Ganzes ist, bin ich nicht sicher, wie dies zu erreichen ist.
kann ich eine URL wie http://foo.com/group/users?sequence=normalize
vorstellen, aber weder ein PUT
noch ein POST
wirklich Sinn macht für die ganze Liste, es sei denn, ich die ganze Sammlung mit den neuen Zahlen, wie die Nachrichtendaten vor.
Wie kann ich eine gesamte Sammlung auf REST-basierende Weise aktualisieren, ohne alle aktualisierten Ressourcen in der Sammlung erneut senden zu müssen?
Dies scheint die richtige Richtung, aber wie gehe ich vor, wenn die Anfrage nicht alle aktuellen Benutzer in der Liste enthält? Beispiel: Benutzer A ruft die Liste ab, in der sich 50 Benutzer befinden. Benutzer B fügt der Liste einen neuen Benutzer hinzu, dann sendet A die neu nummerierten 50 in einem PATCH, berücksichtigt diesen neuen Benutzer jedoch nicht (oder umgekehrt) ein Benutzer wurde gelöscht.) Ich bin besorgt in diesem Fall würden wir mit zwei doppelten Nummern enden; Gibt es einen Weg, das zu verhindern? –
Ich denke, Sie sollten überlegen, die HTTP-Header ETag und If-Match zu nutzen, um optimistisches Sperren mit REST zu implementieren. Dieser Link könnte Sie interessieren: https://looselyconnected.wordpress.com/2010/03/25/the-http-etag-header-and-optimistic-locking-in-rest/. Hoffe es hilft dir. –