关于休息“无国籍沟通”原则

时间:2013-08-05 11:58:45

标签: web-services rest session shopping-cart stateless

其余的关键原则之一是不维护服务器上的状态或无状态地进行通信。我想知道这个原则在购物车上是如何运作的? 因此,如果用户正在从购物网站的购物车中添加产品。在我看来,服务器将有一些实现在会话范围内拥有购物车,用户将发送一个帖子调用以在购物车中添加产品。例如/ shoppingcart / products / 1。现在,产品仍然添加到购物车中(但不会保留在数据库中),直到用户确认结帐。在确认退房时,购物车项目将持久保存到服务器端的数据库中。

这种方法(将项目置于会话范围内的服务器端的购物车中)是否违反了休息原则?如果是,那么我们如何通过照顾“无国籍”的沟通原则来实现向购物车添加产品呢?

1 个答案:

答案 0 :(得分:2)

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

另一种无国籍的方法是让客户跟踪购物车中的所有商品,但这意味着用户不能将购物车(放弃购物车)放在一台电脑上并继续在另一台设备上购物。

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