Zastanawiam się, czy zamiast bardziej tradycyjnego układu takiego jak ten:
api/Products
GET // gets product(s) by id
PUT // updates product(s) by id
DELETE // deletes (product(s) by id
POST // creates product(s)
Czy bardziej przydatne byłoby użycie liczby pojedynczej i mnogiej, na przykład:
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
Aby utworzyć kolekcję produktów, możesz:
POST api/Products {data: filters} // returns api/Products/<id>
A następnie, aby się do tego odwołać, możesz:
GET api/Products/<id> // returns array of products
Moim zdaniem główną zaletą robienia tego w ten sposób jest to, że pozwala na łatwe buforowanie kolekcji produktów. Można na przykład poświęcić godzinę życia na kolekcje produktów, co drastycznie zmniejsza połączenia na serwerze. Oczywiście obecnie widzę tylko dobrą stronę robienia rzeczy w ten sposób, co jest wadą?
Minusem jest to, że program wywołujący musi również pluralizować nazwę zasobu, co może być trudne dla tych języków klienta, które nie mają wbudowanych mechanizmów pluralizacji. Jeśli pozostawisz tę liczbę pojedynczą, osoba dzwoniąca może łatwiej zautomatyzować generowanie kodu dla swojej biblioteki klienta.
Jeśli chcesz to złagodzić, możesz samodzielnie wygenerować zestawy SDK dla swojej usługi REST. Lub możesz być po prostu uparty i zająć się skargą :)
źródło