Me he estado preguntando si, en lugar de un diseño más tradicional como este:
api/Products
GET // gets product(s) by id
PUT // updates product(s) by id
DELETE // deletes (product(s) by id
POST // creates product(s)
¿Sería más útil tener un singular y un plural, por ejemplo:
api/Product
GET // gets a product by id
PUT // updates a product by id
DELETE // deletes a product by id
POST // creates a product
api/Products
GET // gets a collection of products by id
PUT // updates a collection of products by id
DELETE // deletes a collection of products (not the products themselves)
POST // creates a collection of products based on filter parameters passed
Entonces, para crear una colección de productos que podría hacer:
POST api/Products {data: filters} // returns api/Products/<id>
Y luego, para referenciarlo, puede hacer:
GET api/Products/<id> // returns array of products
En mi opinión, la principal ventaja de hacer las cosas de esta manera es que permite el almacenamiento en caché fácil de colecciones de productos. Uno podría, por ejemplo, poner una vida útil de una hora en colecciones de productos, reduciendo drásticamente las llamadas en un servidor. Por supuesto, actualmente solo veo el lado bueno de hacer las cosas de esta manera, ¿cuál es el inconveniente?
La desventaja es que el programa de llamada también tiene que pluralizar el nombre del recurso, lo que puede ser complicado para los idiomas de los clientes que no tienen mecanismos de pluralización integrados. Si lo deja en singular, es más fácil para la persona que llama automatizar la generación de código para su biblioteca cliente.
Si desea mitigar esto, puede generar los SDK para su servicio REST usted mismo. O bien, puede ser obstinado y lidiar con las quejas :)
fuente