REST|RESTful初步認識

       工做中要用到jersey來實現restful風格的webservice。對於webservice另外一定的認知(可以以爲是一種服務,遠程調用的組件),但是對於restful筆者根本就木有了解過,restful到底是什麼,是一種技術?規範?因而筆者花了些時間查詢了下資料,看了下書,總算有點眉目了。java

什麼是REST

       REST(REresentation State Transfer:表象化狀態轉變)描寫敘述了一個架構樣式的網絡系統,它是一種架構風格、設計風格而不是標準、技術,只不過提供了一組設計原則和約束條件(而且並不強制)。Restful式的架構主要用於client和server交互類的軟件,基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。現在來講,REST/RESTful都是指的RESTful Web Service。web

REST標準

       REST是面向資源的架構風格,一般基於使用HTTP,URI,和XML以及HTML這些現有的普遍流行的協議和標準。在你的應用系統管理之下的不論什麼事物都將被以爲是一個資源(resource),每個資源必須至少有一個URI(儘可能少且具備實際意義)。api


  • 資源是有URI來指定的(client也是經過URI來訪問的)。
  • 對資源的操做包含獲取、建立、改動、刪除等操做,而這些操做正好相應HTTP協議提供的GET、POST、PUT、DELETE方法。
  • 經過操做資源的表現形式來操做w資源。
  • 資源的表現形式則是XML或者HTML。


REST的要求

        對於實際的web架構假設要實現RESTful風格,有下面4點要求:瀏覽器


  1. 具備client和server結構
  2. 鏈接協議具備無狀態性。
  3. 能夠利用Cache機制增進性能
  4. 層次化的系統。

  

      RESTful最重要的原則是:client和server之間的交互在請求之間是無狀態的。從client到server的每個請求都必須包括理解請求所必須的信息。這樣server端在請求期間從新啓動,client不會獲得通知,且無狀態請求可以由不論什麼可用服務進行回答,client可以緩存數據以改進性能。緩存

      層次化的系統表示組件沒法瞭解它與之交互的中間層之外的組件。經過將系統知識限制在但各層,可以限制整個系統的複雜性,促進了底層的獨立性。restful

      應該注意差異應用的狀態和鏈接協議的狀態。HTTP鏈接是無狀態的(也就是不記錄每個鏈接的信息),而REST傳輸會包括應用的所有狀態信息,所以可以減小對HTTP鏈接的反覆請求資源消耗。網絡

      含狀態傳輸的web服務也稱爲RESTful web api是一個使用HTTP並遵循REST原則的Web服務(JAX-RS規範定義了java對RESTful Web Service的實現,sun的jersey框架則是多JAX-RS的一個實現,jersey也是興許要學習的)。架構

      RESTful web api從下面三個方面資源進行定義:框架

  • 直觀剪短的資源地址:URI,好比:http://XXX.com/resources。
  • 傳輸的資源:Webserver接受與返回的互聯網媒體類型:JSON、XML、TEXT等。
  • 對資源的操做:Web服務在該資源上所支持的一系列請求方法(PUT POST GET DELETE)

REST長處

      一、可更高效利用緩存來提升響應速度。性能

      二、無狀態性可以讓不一樣server的處理一些列請求中的不一樣請求,提供server的擴展性。

      三、瀏覽器就能夠做爲client,簡化軟件需求。

      四、相對於其它疊加在HTTP協議之上的機智,REST的軟件依賴性更小

      五、不需要額外的資源發現機制。

相關文章
相關標籤/搜索