在Restful Web服务中的状态

3
我对rest不太了解:我正在创建一个类似购物车的webservice,用户需要进行身份验证并按用户添加项目。如何使用Rest实现此操作? 当他们说“REST是无状态”时,这是什么意思? 我能否在sqlserver数据库中创建会话并将其返回到响应中,以便客户端可以在其后续调用中使用它?这是否考虑可扩展性?
我看过有关有状态rest服务的帖子,并且他们回答说可扩展性将成为问题。还有一些帖子建议将信息存储在数据库中管理基于RESTful的应用程序中的状态但是将值存储在数据库中也是某种有状态,因为客户端需要按顺序执行并传递一些令牌以进行进一步调用。 那么我可以得出结论,rest不适用于购物车之类的应用程序吗?

可能是SOAP或REST用于Web服务?的重复问题。 - Jeen Broekstra
一个购物车可能不应该出现在你的REST服务中。通常,在网站上,你会在session中实现购物车,但是还有其他的方法(例如在cookies中)。如果你想要一个没有session的购物车,你可以实现一个购物车存储库,并将其视为系统中的实体。然后,你可以遵循REST原则。 - Jazzwave06
1个回答

2
REST无状态约束规定客户端和服务器之间的通信必须是无状态的,这意味着每个请求必须包含完成该请求所需的所有信息。简单来说,这意味着您不能拥有服务器端会话,但您可以拥有客户端会话。
请记住,REST是一种架构风格,您应该遵循约束条件以利用相关的好处。如果这些好处对您不重要,那么最好忽略它们,而不是仅仅为了遵循风格而使用没有任何好处的东西。无状态约束旨在增加可见性、可靠性和可扩展性。可见性,因为整个请求可以立即理解;可靠性,因为从服务器端故障中恢复更容易;可扩展性,因为任何服务器实例都可以响应任何请求。如果这些对您不重要,那么可以保留服务器端会话,如果这样更容易的话。

1
这是否意味着我们不能在购物车等应用程序中享受REST架构风格的好处? - mictes
一点也不。这仅意味着您不能在服务器端使用会话来实现那种功能。 - Pedro Werneck
1
你会怎么做才能使它完全符合RESTful要求? - mictes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接