6

假设我有一个具有“购物车”功能的在线商店,我想以 RESTful 方式实现“空购物车”链接。

为简单起见,假设我的资源是一个包含 CartItems 的 Cart,每个 CartItems 都有一个 Product。我的 URI 可能是:

# 将产品添加到当前用户的购物车
发布 /products/product_id/cart_items/

# 从当前用户的购物车中删除一个产品
删除 /cart_items/cart_item_id/

如果是这样,“空购物车”链接的 RESTful URI 会是什么样子?

相反,我可以将购物车视为操作的通用持有者(如此处所述):

# 添加一个产品
# 表单数据包含例如 product_id=123&action=add
发布 /carts/cart_id/actions/

# 删除一个产品
# action_id 是添加产品 123 的操作的 id
删除操作/action_id

# 空购物车
# 表单数据包含 action=clear
发布 /carts/cart_id/actions/

这种方法似乎比它需要的更复杂。有什么更好的方法?

4

3 回答 3

18

不要做第二种方法。通过一个端点进行不同的汇集actions不会让人感觉 RESTful IMO。

你已经从他们的购物车DELETE /cart_items/cart_item_id/中删除cart_item_id了。如何DELETE /cart_items/清理购物车本身?

于 2009-01-14T20:41:04.993 回答
8

将商品添加到购物车:

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

这看起来很直观吗?

于 2009-02-17T11:15:31.907 回答
1

DELETE /cart_items/是一个有趣的想法,这里也讨论过

于 2009-01-14T20:59:11.947 回答