Многократные обновления RESTful (Пример: очистить корзину)? - PullRequest
5 голосов
/ 14 января 2009

Допустим, у меня есть интернет-магазин с функцией "корзина для покупок", и я хочу реализовать ссылку "пустая корзина" RESTful способом.

Для простоты, скажем, мои ресурсы - это Корзина, содержащая CartItems, у каждого из которых есть Продукт. Мои URI могут быть:

# 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/

Если это так, как будет выглядеть RESTful URI для ссылки «пустая корзина»?

Вместо этого я мог бы думать о корзине как об универсальном держателе для действий (, как описано здесь ):

# 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/

Этот подход кажется более сложным, чем должен быть. Что было бы лучше?

Ответы [ 3 ]

15 голосов
/ 14 января 2009

Не делайте второй подход. Направление различных actions через одну конечную точку не вызывает RESTful IMO.

У вас есть DELETE /cart_items/cart_item_id/, который удаляет cart_item_id из их корзины. Как насчет DELETE /cart_items/, чтобы очистить саму корзину?

6 голосов
/ 17 февраля 2009

Добавление товара в корзину:

POST carts/{cartid}/items

Получение определенного товара из корзины:

GET carts/{cartid}/items/{itemid}

Удаление определенного товара из корзины:

DELETE carts/{cartid}/items/{itemid}

Получение состояния корзины:

GET carts/{cartid}/state

(может вернуть значение, например 0,1, которое указывает количество товаров в корзине)

Опорожнение корзины:

PUT carts/{cartid}/state?state=0

Это выглядит интуитивно понятным?

1 голос
/ 14 января 2009

DELETE /cart_items/ - интересная идея, которая также обсуждалась здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...