2011-12-23 84 views
3

我們正在評估用於基於Web的應用程序的技術,並提出一些建議,以使用基於REST的服務方法。 技術堆棧在基於REST的應用程序中管理狀態

1)春 2)的Apache CXF(JAX-RS)

我的問題是

1)如何狀態請求之間管理。例如,用戶已通過身份驗證,現在他提出了一系列請求,可以說通過分頁報告。我可以想象這個網址就會像

domain.com/reports/customreport/page/1 domain.com/reports/customreport/page/2 等等

一)在哪裏存儲用戶信息&請求參數,以便它可以在請求之間共享。 b)比方說結果正在流式傳輸,Rowset存儲在哪裏?

是否有一個類似於Petclinic的完整示例應用程序,可以提供此類應用程序的最佳實踐。

回答

4

如果您嚴格/正確地執行RESTful,那麼用戶身份驗證將在每個請求中完成,並且沒有會話的概念。每個請求都包含足夠的上下文信息(在URL和/或請求參數中)以允許它獨立於會話工作。

1)請求之間如何管理狀態。

它必須由客戶端管理。

a)用戶信息&在哪裏存儲,以便它可以在請求之間共享。

用戶身份驗證信息由客戶端存儲並隨每個請求一起提供給服務器。服務器將重新計算每個請求上關於用戶的派生信息。任何通常存儲在服務器端「會話」中的請求參數都必須在每次請求時重新傳遞。

b)比方說結果正在流式傳輸,Rowset存儲在哪裏?

在第一瞬間,無處可見。該查詢每次重新發佈一個參數,說明要跳到哪裏。如果性能是一個問題,你可以

  • 預讀結果集的幾頁,並將它們存儲在服務器端緩存,或
  • 調爲查詢數據庫查詢緩存。
3

1)用戶信息沒有存儲在任何地方,用戶必須在每個請求中發送他的憑證(或者你使用的任何認證方法)。

2)流沒有多大意義的RESTful API,因此如果你想辦的流我大大建議你去尋找類似的WebSockets(在Java中,你可以很容易地做到這一點with Jetty

如果您表示流式傳輸,但意味着分頁結果,與相同,則不存在任何狀態,客戶端必須發送一個包含所有信息的新請求,並且服務器必須查詢數據庫(或轉至緩存,或者做任何需要的)並將結果返回給客戶。

你也應該閱讀更多關於REST,你的問題是相當模糊的,一個好的開始是成功的Restful Web Services書,或者,如果你喜歡冒險,你可以嘗試Roy Fielding dissertation該定義的今天就是我們所說的REST。

相關問題