Załóżmy, że mam sklep internetowy z funkcją "koszyka na zakupy" i chcę zaimplementować link "pusty koszyk" w trybie RESTOWN.RESTful wiele aktualizacji (na przykład: wyczyść koszyk)?
Dla uproszczenia załóżmy, że moje zasoby to Koszyk zawierający CartItems, z których każdy ma Produkt. Moje identyfikatory URI mogą być następujące:
# add a product to the current user's Cart POST /products/product_id/cart_items/ # remove a product from the current user's Cart DELETE /cart_items/cart_item_id/
Jeśli tak, to jak będzie wyglądał URESTULT URI dla linku "pustego koszyka"?
Zamiast tego mogę myśleć o Koszyka jako posiadacz ogólnego przeznaczenia dla czynności (as described here):
# add a product # form data contains e.g., product_id=123&action=add POST /carts/cart_id/actions/ # remove a product # action_id is the id of the action adding product 123 DELETE actions/action_id # empty cart # form data contains action=clear POST /carts/cart_id/actions/
Takie podejście wydaje się bardziej skomplikowana niż to musi być. Jaki byłby lepszy sposób?
Opróżnianie koszyka za pomocą 'DELETE carts/{cartid}/items' wygląda o wiele bardziej intuicyjnie w twoim (w przeciwnym razie bardzo klarownym) przykładzie. – Tomas
Jakiekolwiek obawy związane z bezpieczeństwem dotyczące umieszczania identyfikatora koszyka w adresie URL? –
@Breako nie, jeśli koszyk jest losowo generowanym przewodnikiem. Nawet wtedy należy przeprowadzić kontrole bezpieczeństwa w celu sprawdzenia "właściciela" koszyka. –