2017-06-01 85 views
0

我们正在开发具有多个屏幕的应用程序。每个屏幕数据来自Rest API。将会话数据(屏幕数据)存储在备份中的最佳做法是什么?REST风格的Web应用程序 - 会话数据管理

例如,我需要屏幕2的数据(包括屏幕输入数据和来自rest API的响应)在第4个屏幕中。为此,我想在服务器端存储屏幕2的其余响应。

我来过两种情况,如果有人有经验请帮忙: 1)使用REDIS的会话管理 - 但这主要用于群集环境。 2)使用spring安全和spring会话管理的会话管理。

请提出更好的方法。

详细信息: Spring引导应用程序将托管在云中 此外问题与安全性,身份验证和授权无关。

请帮助我将数据移动到不同屏幕的最佳做法。

回答

2

例如,我需要屏幕2的数据(包括屏幕输入数据和来自rest API的响应)在第4个屏幕中。为此,我想在服务器端存储屏幕2的其余响应。

您所描述的是违反了REST的Stateless体系结构约束。

“正确的”答案是采取两种方法之一;一种是将“会话数据”存储在客户端上 - 服务器将数据发送回客户端(例如,作为表单中的固定/隐藏字段)。另一种是使用客户端操作来修改资源(想想购物车)。

核心问题是:无状态约束意味着服务器只在当前请求上运行;服务器只会看到请求,而不会看到状态变化(例如:客户端可以点击后退按钮,或者跳转到历史记录中的某个其他状态,或者从其他地方获取其他状态)。

如果您使用“修改资源”方法,您可能需要查看RFC 7232: Conditional Requests,并考虑您的用例是否需要担心“丢失的更新问题”。

+0

但在我的情况下,数据是巨大的1MB左右。所以我不想在客户端存储屏幕数据。我该如何解决这个问题? –