【问题标题】:How to implement shopping cart functionality when creating REST web service?创建 REST Web 服务时如何实现购物车功能?
【发布时间】:2014-07-30 08:36:09
【问题描述】:

我正在为数字服务创建应用商店。我希望用户在确认订单和支付服务费用之前能够选择多个不同数量的产品。这要求某些东西保持状态。来自REST Wikipedia

来自任何客户端的每个请求都包含服务请求所需的所有信息,并且会话状态保存在客户端中。

我得到了需要保存在某个地方的状态,并且我也有一个流程。我可以管理的流程,但这是我不明白我应该如何以及在哪里存储的状态。用户可以在结账前将多个产品添加到购物车。

我想到了一个像这样的端点,你每次想要一些东西时都发布一个cart-item 对象。

POST /shopping-cart

但如果我理解正确,我不应该使用 HTTP 会话吗?我看到有人说将它存储在数据库中,但你会使用内存数据库吗?如果用户不确认并付款,我应该什么时候刷新数据库?我可能需要一些关于我应该做些什么来保持简单和 RESTful 的意见。

我正在使用 Spring 4.x 和 Java EE 作为记录。

【问题讨论】:

  • 我更喜欢当我的机器崩溃并且我回到一个网站并发现我的购物车里还有我的东西时,所以我投票支持数据库。许多网站确实会将购物车保留一段时间,例如 14 天。
  • @JacobMattison Okey,谢谢 :)

标签: java spring rest jakarta-ee


【解决方案1】:

但如果我理解正确,我不应该使用 HTTP 会话吗?

正确。

我看到有人说要将它存储在数据库中,但你会使用内存数据库吗?

您应该保存在磁盘存储数据库中。这允许您将节点添加到您的服务器,而不必担心将来自一个客户端的所有请求路由到同一个节点。

如果用户不确认并付款,我应该什么时候刷新数据库?

这是一个商业决策。

【讨论】:

  • 好吧,那么我为购物车、购物车商品等创建普通实体,然后像往常一样将其保存在数据库中吗?
  • 那么在用户购买了商品之后,你会如何处理购物车呢?删除它,还是将其标记为已付费?
  • 记住一件事,永远永远永远不要删除任何东西。只需设置一个标志:已删除。购买也是如此。这是我的观点! :D
  • @LuckyLuke 这就是我的建议,是的。您持有购物车的时间也是一项商业决策。我可能会将其实现为每个用户一个购物车,将项目删除并添加到订单中,而不是多个购物车,但我对您的项目一无所知。 :-)
  • @LMG“从不”是很长一段时间。最终,这类数据需要从实时数据库迁移到备份或 /dev/null。
猜你喜欢
  • 2011-12-19
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2016-01-29
  • 2020-10-19
  • 1970-01-01
  • 2022-06-10
  • 2016-02-20
相关资源
最近更新 更多