【问题标题】:State in Restful web serviceRestful Web 服务中的状态
【发布时间】:2015-06-14 03:45:15
【问题描述】:

我是新手:我正在创建一个像 web 服务这样的购物车,用户需要在其中进行身份验证并为每个用户添加商品。如何使用 Rest 实现这一点。 当他们说“REST 是无状态的”时是什么意思 我可以在 sqlserver 数据库中创建一个会话并返回它作为响应,以便客户端可以使用它进一步调用吗?它是否考虑可扩展性?

我看过关于有状态休息服务的帖子,他们回答说可扩展性将是一个问题。还有一些帖子建议将信息存储在数据库Managing state in RESTful based application 但是将值存储在数据库中也是某种有状态的,因为客户端需要按顺序执行并传递一些令牌以供进一步调用。 那么我可以得出结论,rest 不适用于类似购物车的应用程序吗?

【问题讨论】:

  • 购物车可能不属于您的 REST 服务。通常,在网站中,您在会话中实现购物车,但是,还有其他方法可以做到这一点(例如在 cookie 中)。如果您想拥有一个没有会话的购物车,您可以实现一个购物车存储库,并将购物车视为您系统中的一个实体。然后,您将遵循 REST 原则。

标签: rest stateful


【解决方案1】:

REST 无状态约束表示客户端-服务器通信必须是无状态的,这意味着每个请求必须包含完成它所需的所有信息。简而言之,这意味着您不能拥有服务器端会话,但拥有客户端会话就可以了。

请记住,REST 是一种架构风格,您应该遵循约束以利用相关优势。如果这些好处对你来说并不重要,那么最好忽略它们,而不是使用仅仅遵循风格并没有任何好处的东西。无状态约束旨在提高可见性、可靠性和可扩展性。可见性,因为整个请求可以立即被理解;可靠性,因为它更容易从服务器端故障中恢复;和可扩展性,因为任何服务器实例都可以响应任何请求。如果这些对您来说不重要,请随时保持服务器端会话,如果这对您来说更容易的话。

【讨论】:

  • 是不是说我们不能像应用一样在购物车中享受其余的架构风格?
  • 一点也不。这只是意味着您不能为此使用服务器端会话。
  • 你会怎么做才能让它完全平静
猜你喜欢
  • 2018-03-02
  • 2017-08-03
  • 2020-02-06
  • 1970-01-01
  • 2011-03-19
  • 2017-04-05
  • 2012-08-20
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多