Мне было интересно, а не более традиционный макет, как это:
api/Products
GET // gets product(s) by id
PUT // updates product(s) by id
DELETE // deletes (product(s) by id
POST // creates product(s)
Было бы более полезно иметь единственное и множественное число, например:
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
Итак, для создания коллекции продуктов вы можете сделать:
POST api/Products {data: filters} // returns api/Products/<id>
И затем, чтобы сослаться на это, вы можете сделать:
GET api/Products/<id> // returns array of products
На мой взгляд, главное преимущество таких действий состоит в том, что они позволяют легко кэшировать коллекции продуктов. Можно, например, установить целую коллекцию продуктов на один час, что значительно сократит количество обращений к серверу. Конечно, в настоящее время я вижу только хорошую сторону в том, чтобы делать что-то подобное, в чем недостаток?