4

其余关键原则之一是不在服务器上维护状态或进行无状态通信。我想了解这个原理在购物车上的作用?因此,假设用户正在从购物网站将产品添加到购物车中。在我看来,服务器将有一些实现在会话范围内拥有购物车,并且用户将发送一个 post call 以将产品添加到购物车中。例如 /shoppingcart/products/1。现在产品仍然添加在购物车中(但不会保留在数据库中),直到用户确认结帐。在确认结帐期间,购物车项目被持久化到服务器端的数据库中。

这种方法(将商品放入会话范围内服务器端的购物车)是否违反了休息原则?如果是,那么我们如何通过照顾“无状态”通信原则来实现将产品添加到购物车?

4

1 回答 1

2

购物车应作为资源处理,添加/删除产品就像您可以在 REST 中添加或删除任何两个资源之间的关联一样。而不是客户说“现在购买我的购物车中的物品”,客户应该说“现在购买购物车中的物品#187462”。为每个购物车分配一个 URL,并让您的操作对该资源而不是与当前会话绑定的某些产品数组进行操作。

另一种无状态的替代方法是让客户端跟踪购物车中的所有商品,但这意味着用户不能将购物车留在(放弃)一台计算机上并在另一台设备上继续购物。

附录:请记住,权限/访问控制可以独立分配。当然,每个购物车都有一个 URL,但一定要确保登录用户只能看到他们创建的购物车资源。

于 2013-08-05T15:38:34.603 回答