2017-06-01 87 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左右。所以我不想在客戶端存儲屏幕數據。我該如何解決這個問題? –