程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> restful風格的webservice開發之概念准備篇,restfulwebservice

restful風格的webservice開發之概念准備篇,restfulwebservice

編輯:JAVA綜合教程

restful風格的webservice開發之概念准備篇,restfulwebservice


理解restful:
什麼是rest,rest是Representational State Transfer的縮寫,翻譯過來就是“表現層狀態轉化”。這裡有點不准確,其實rest省略了主語
表現層指的是資源的表現層。在這裡所謂的資源指的是互聯網上的一個實體,一個具體的信息。比如作為交互的一個文本,一段個人信息,一張圖片等等。。。你可以用一個URI(統一資源定位符)指向它,每種資源對應一個特定的URI,要獲取這個資源,訪問它的URI就可以
,因此URI就成了每一個資源的地址或獨一無二的識別符。
那麼什麼是表現層?
資源作為一個實體可以有多種表現形式。比如一張文字,可以用txt表示,也可以用xml和json來表示,甚至可以用2進制流來表示。當我們用
URI這個定位符對資源進行互動的時候,資源需要以一種確定的的表現形式來交互這種表現形式就是表現層,資源的具體表現形式(即資源用什麼方式傳播),
應該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段才是對"表現層"的描述。舉個栗子,當我要傳一個人的信息的時候
我可以把這個人的信息封裝成一個json然後通過uri傳給服務端。那麼這時候json就是個人信息的表現層。
狀態轉化:
理解了上面的資源 和資源的表現層,再來理解這個定義就很好理解了。訪問一個網站,就代表了客戶端和服務器的一個互動過程。在這個過程中,
勢必涉及到數據和狀態的變化,這個過程就是狀態轉化。舉個栗子,小明在某個網站進行了一次注冊。要把個人信息通過類似xx/postUser的uri
來完成注冊,在這個過程中小明輸入的個人信息(資源) 通過一種傳輸方式,比如json(資源的表現層)通過資源的定位符uri傳給了服務器
服務器解析json然後存入數據庫(這裡還是資源,只不過狀態變了,變成存儲在硬盤中的數據)。這個過程就是狀態轉化,很明顯可以看出
這種轉化是建立在表現層上的(這裡是json)。
客戶端用到的手段,只能是HTTP協議。具體來說,就是HTTP協議裡面,
四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應四種基本操作:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),
PUT用來更新資源,DELETE用來刪除資源。
總結一下:
1、uri表示一種資源(或者說對資源的操作?)
2、C/S之間的的交互是通過資源的表現層(也可以理解為傳輸方式)來傳遞的。
3、客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"。
那麼restful和soap的區別是什麼,優缺點是什麼?
這裡不在介紹soap網上一大堆的資料,只談兩者的優缺點。兩者最根本的區別就是soap協議是重量級的復雜的協議,而REST是一種輕量級
的web service架構風格其實現和操作比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協議實現,還可以利用緩存Cache來提高響應速度,
性能、效率和易用性上都優於SOAP協議。REST架構對資源的操作包括獲取、創建、修改和刪除資源的操作正好對應HTTP協議提供的GET、
POST、PUT和DELETE方法,這種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。
REST架構尤其適用於完全無狀態的CRUD(Create、Read、Update、Delete,創建、讀取、更新、刪除)操作。當然soap也有其獨到的一面
不做過多介紹和本文沒多大關系。
具體見http://blog.sina.com.cn/s/blog_493a845501012566.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved