RESTful Web应用程序 - 会话数据管理

时间:2017-06-01 10:50:21

标签: rest

我们正在开发一个具有多个屏幕的应用程序。每个屏幕数据都来自Rest API。在备份时存储会话数据(屏幕数据)的最佳做法是什么?

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

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

请建议更好的方法。

详细说明: Spring-boot应用程序将托管在云端 此问题与安全性,身份验证,授权无关。

请帮助我进行最佳操作,将数据移至不同的屏幕。

1 个答案:

答案 0 :(得分:2)

  

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

您所描述的内容违反了REST的Stateless架构限制。

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

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

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