Fiquei me perguntando se, em vez de um layout mais 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)
Seria mais útil ter um singular e um plural, por exemplo:
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
Portanto, para criar uma coleção de produtos, você pode:
POST api/Products {data: filters} // returns api/Products/<id>
E então, para referenciá-lo, você pode fazer:
GET api/Products/<id> // returns array of products
Na minha opinião, a principal vantagem de fazer as coisas dessa maneira é permitir o armazenamento em cache fácil de coleções de produtos. Pode-se, por exemplo, colocar uma vida útil de uma hora em coleções de produtos, reduzindo drasticamente as chamadas em um servidor. Claro, atualmente só vejo o lado bom de fazer as coisas dessa maneira, qual é a desvantagem?
A desvantagem é que o programa de chamada também precisa pluralizar o nome do recurso, o que pode ser complicado para os idiomas do cliente que não possuem mecanismos de pluralização embutidos. Se você deixar singular, é mais fácil para o chamador automatizar a geração de código para sua biblioteca cliente.
Se você quiser atenuar isso, poderá gerar os SDKs para seu serviço REST. Ou você pode apenas opinar e lidar com a reclamação :)
fonte