如何在REST中管理状态

我想这个问题听起来很熟悉,但我还是另一位被REST困扰的程序员。

我有一个传统的Web应用程序,从StateA到StateB等等。 如果用户转到StateB的(URL),我想确保他以前访问过StateA。 传统上,我使用会话状态来执行此操作。

由于REST中不允许会话状态,因此我如何实现这一点?


有2 REST的答案,这取决于你正在试图做什么。

如果您确实试图管理基于请求的状态(例如,当用户正在通过多屏幕向导或其他基于导航的工作流程进行操作时),那么REST的答案是该状态应该来回发送每个请求/响应(使用类似隐藏文本字段,查询字符串或存储在表单中的POST数据)。 这是Martin Fowler的“客户端状态”设计模式的一个实现(在他的书“企业应用程序架构模式”中详细介绍;请参阅这里以供参考)。

另一方面,如果您尝试在服务器上管理某种新对象(例如购物车),那么REST的答案就是您实际上正在创建一个新的实体,该实体可以像任何其他实体一样访问一个直接的URL。 无论你是否将这个新实体存储在数据库或应用程序内存中(如传统的Session对象)都取决于你,但无论哪种方式,新对象都不太关于服务器上的“状态”,更多的是关于创建新的实体供用户进行交互。

链接地址: http://www.djcxy.com/p/7049.html

上一篇: How to manage state in REST

下一篇: Java URL encoding of query string parameters