2013-04-10 22 views
9

我見過很多叫做Spring REST的例子,它們基本上都是簡單的Spring MVC。當然,使用JAXB和JAXON,您可以提供XML和JSON響應,但REST更多的不僅僅是提供文本響應。Spring MVC是如何構建一個REST框架的?

一個主要問題是這些例子中沒有提到有關會話的任何內容;一個REST應用程序應該是無會話的,但Spring MVC肯定是會話滿的。因此,Spring MVC會以某種方式禁用會話,或者當我們使用Spring MVC實現REST時,我們是否應該禁用會話?

如果我們應該禁用會話;那麼它是如何完成的?

+0

我們需要處理的會議我們自己 – 2013-04-10 03:24:54

+2

+1,這個問題非常好 – Jayy 2014-02-19 15:48:45

回答

9
  • Spring MVC在您使用它們之前不會啓用會話;

  • 我完全同意Spring中所謂的「休息支持」應該被稱爲「漂亮的URL和傑克遜整合」,但是現在它幾乎沒有市場吸引力(儘管漂亮的URL和JSON是唯一的東西人們與REST相關聯,並將CRUD映射到http動詞)。

  • REST是一個與會話無關的架構選擇(也不是漂亮的url或json)。由於它更像是一種宗教而不是實際的技術,因此沒有人會將它翻譯成一套固定的實踐。您可以將會話建模爲在用戶登錄時創建並在一段時間後消失的資源。等等。

+0

你有,直到你使用它們Spring MVC的不啓用會話源?我找不到任何提及此的來源。我完全同意你的第二個陳述。但是,對於第三條語句,無會話是REST Web服務的基本屬性;如果你的web應用使用會話,那麼你根本不能稱之爲REST。 – user1888243 2013-04-10 16:05:14

+0

@ user1888243:好吧,我們都有**最權威的來源,即來源:-)你可以grep它出現「getSession」並查看。即使像FlashMapManagers這樣的組件,也不要在不可避免的情況下打開會話。另一方面,您可以使用Spring MVC(如Jasper)的一些技術默認打開會話。 – fdreger 2013-04-10 16:36:47

+2

@ user1888243:在Fielding的論文中沒有任何句子能夠說出類似於「但要記住的東西」,即使您按照我的話來說,如果您使用名爲JSESSIONID的Cookie,則不應允許您調用您的應用程序RESTful 」。對於客戶看到的應用程序應該是「無狀態的」。在門面後面,我可以使用任何我喜歡的技術手段,甚至緩存某些狀態並將其附加到某個客戶端。反之亦然:即使沒有使用會話和最漂亮的網址,我可以做一個糟糕的,不安寧的應用程序。 – fdreger 2013-04-10 16:44:28