Im Allgemeinen haben Sie einen Endpunkt, der die gesamte Sammlung von x darstellt :
/products
Sag mal, wollen Sie ein einzelnes Produkt zu aktualisieren, Sie machen PUT zu /products/{id}
. Wenn Sie ein einzelnes Produkt teilweise aktualisieren möchten (nicht jedes Feld aktualisieren), können Sie auch einen PATCH to verwenden /products/{id}
. Gleiches gilt für das Löschen einer einzelnen Entität ( DELETE to /products/{id}
).
Wenn Sie auf eine einzelne Ressource abzielen möchten , qualifizieren Sie sich über den Pfad, welche einzelne Ressource Sie ändern möchten.
Die einzige Aktion, die das Schema bricht, ist die Erstellung einer Ressource. Wenn Sie eine Ressource erstellen, zielen Sie auf die gesamte Sammlung ab, sagen Sie POST zu /products
.
Es sollte jedoch klar sein, dass das Ziel für Operationen, die die gesamte Sammlung betreffen, zum entsprechenden Sammlungsendpunkt gehen sollte.
Wenn Sie beispielsweise eine Untergruppe roter Produkte abrufen möchten, fragen Sie nach
GET to /products?colour=red
.
Also, wenn Sie alle diese löschen möchten, Sie DELETE /products?colour=red
. Oder wenn Sie einige Produkte über löschen möchten id
, können Sie LÖSCHEN /products?id=1&id=2&id=3
.
Was ist bulk Schaffung von Ressourcen? POST Ihre Sammlung [{...},{...},{...}]
einfach an /products
. Gleiches gilt für PUT und PATCH .
Das ist wirklich unkompliziert.
Um Ihre Fragen zu beantworten:
Wenn ich der Sammlung hinzufügen muss, ist es in Ordnung, dass ich nur einige Produkte mit PUT übergebe?
Es ist nicht nur in Ordnung, Sie werden auch dazu ermutigt.
Wenn ich einige Produkte aus der Sammlung löschen muss, ist es in Ordnung, dass ich Filterdaten (ein Array von IDs) mit DELETE übergebe?
Das ist in Ordnung. Wie Eneko Alonso schrieb, gibt es manchmal Massenoperationen , die über "Controller" -Endpunkte gekapselt sind , dh ein POST wird verwendet, um (komplexe) Operationen auszulösen.