其余的关键原则之一是不维护服务器上的状态或无状态地进行通信.我想知道这个原则在购物车上是如何运作的?
因此,如果用户正在从购物网站的购物车中添加产品.在我看来,服务器将有一些实现在会话范围内拥有购物车,用户将发送一个帖子调用以在购物车中添加产品.例如/ shoppingcart / products / 1.现在,产品仍然添加到购物车中(但不会保留在数据库中),直到用户确认结帐.在确认结账时,购物车项目会持久保存到服务器端的数据库中.
这种方法(将项目置于会话范围内的服务器端的购物车中)是否违反了休息原则?如果是,那么我们如何通过照顾“无国籍”的沟通原则来实现向购物车添加产品?
最佳答案 应该将购物车作为资源处理,并添加/删除产品,就像您可以在REST中添加或删除任何两个资源之间的关联一样.客户应该说“现在购买购物车中的物品#187462”,而不是客户说“现在购买我的购物车中的物品”.为每个购物车分配一个URL,让您的操作对该资源起作用,而不是与当前会话绑定的某个产品阵列.
另一种无状态的方法是让客户跟踪购物车中的所有商品,但这意味着用户不能将购物车(放弃它)放在一台计算机上并继续在另一台设备上购物.
附录:请记住,可以单独分配权限/访问控制.当然,每个购物车都有一个URL,但一定要做到这一点,以便登录用户只能看到他们创建的购物车资源.