En general, tiene un punto final que representa la colección completa de x :
/products
Por ejemplo, quieres actualizar un solo producto, se hace un PUT a /products/{id}
. Si desea actualizar parcialmente un solo producto (sin actualizar todos los campos), también puede usar un PATCH para /products/{id}
. Lo mismo ocurre con la eliminación de una sola entidad ( DELETE to /products/{id}
).
Si desea apuntar a un único recurso, califique a través de la ruta, qué recurso único desea modificar.
La única acción que rompe el esquema es la creación de un recurso. Cuando cree un recurso, apunte a la colección como un todo, diga POST a /products
.
Dicho esto, debe quedar claro, que el objetivo para las operaciones que afectan a la colección en su conjunto, debe ir al punto final de recolección apropiado.
Por ejemplo, si desea recuperar un subconjunto de productos que son rojos, lo solicita
GET a /products?colour=red
.
Entonces, si desea eliminar todo esto, BORRAR /products?colour=red
. O si desea eliminar algunos de los productos mediante id
, puede ELIMINAR /products?id=1&id=2&id=3
.
¿Qué pasa con la creación masiva de recursos? PUBLICA tu colección [{...},{...},{...}]
simplemente en /products
. Lo mismo aplica para PUT y PATCH .
Eso es realmente sencillo.
Para responder tu pregunta:
Si necesito agregar a la colección, ¿está bien que solo pase algunos productos con PUT?
No solo está bien, le recomendamos que lo haga así.
Si necesito eliminar algunos productos de la colección, ¿está bien que pase los datos del filtro (una matriz de ID) con DELETE?
Eso está bien. Como escribió Eneko Alonso, a veces hay operaciones masivas encapsuladas a través de puntos finales "controladores", es decir, se utiliza una POST para desencadenar operaciones (complejas).