rest 概念

REST 從資源的角度來觀察整個網絡,分佈在各處的資源由URI確定,而客戶端的應用通過URI來獲取資源的表示方式。獲得這些表徵致使這些應用程序轉變了其狀態。隨着不斷獲取資源的表示方式,客戶端應用不斷地在轉變着其狀態,所謂表述性狀態轉移(Representational State Transfer)。

這一觀點不是憑空臆造的,而是通過觀察當前Web互聯網的運作方式而抽象出來的。Roy Fielding 認爲,

“設計良好的網絡應用表現爲一系列的網頁,這些網頁可以看作的虛擬的狀態機,用戶選擇這些鏈接導致下一網頁傳輸到用戶端展現給使用的人,而這正代表了狀態的轉變。”

REST是設計風格而不是標準。REST通常基於使用HTTP,URI,和XML以及HTML這些現有的廣泛流行的協議和標準。

資源是由URI來指定。
對資源的操作包括獲取、創建、修改和刪除資源,這些操作正好對應HTTP協議提供的GET、POST、PUT和DELETE方法。
通過操作資源的表現形式來操作資源。
資源的表現形式則是XML或者HTML,取決於讀者是機器還是人,是消費web服務的客戶軟件還是web瀏覽器。當然也可以是任何其他的格式。
REST的要求
客戶端和服務器結構
連接協議具有無狀態性
能夠利用Cache機制增進性能
層次化的系統
隨需代碼 - Javascript (可選)

RESTful Web 服務

RESTful Web 服務(也稱爲 RESTful Web API)是一個使用HTTP並遵循REST原則的Web服務。它從以下三個方面資源進行定義:URI,比如:http://example.com/resources/

§ Web服務接受與返回的互聯網媒體類型,比如:JSON,XML ,YAML 等。

§ Web服務在該資源上所支持的一系列請求方法(比如:POST,GET,PUT或DELETE)。

該表列出了在實現RESTful Web 服務時HTTP請求方法的典型用途。

HTTP 請求方法在RESTful Web 服務中的典型應用

資源
GET
PUT
POST
DELETE

一組資源的URI,比如http://example.com/resources/
列出 URI,以及該資源組中每個資源的詳細信息(後者可選)。
使用給定的一組資源替換當前整組資源。
在本組資源中創建/追加一個新的資源。 該操作往往返回新資源的URL。
刪除 整組資源。

單個資源的URI,比如http://example.com/resources/142
獲取 指定的資源的詳細信息,格式可以自選一個合適的網絡媒體類型(比如:XML、JSON等)
替換/創建 指定的資源。並將其追加到相應的資源組中。
把指定的資源當做一個資源組,並在其下創建/追加一個新的元素,使其隸屬於當前資源。
刪除 指定的元素。

PUT 和 DELETE 方法是冪等方法。GET方法是安全方法 (不會對服務器端有修改,因此也是冪等的)。

不像基於SOAP的Web服務,RESTful Web服務並沒有的“正式”標準。 這是因爲REST是一種架構,而SOAP只是一個協議。雖然REST不是一個標準,但在實現RESTful Web服務時可以使用其他各種標準(比如HTTP,URL,XML,PNG等)。

REST的優點

可以利用緩存Cache來提高響應速度
通訊本身的無狀態性可以讓不同的服務器的處理一系列請求中的不同請求,提高服務器的擴展性
瀏覽器即可作爲客戶端,簡化軟件需求
相對於其他疊加在HTTP協議之上的機制,REST的軟件依賴性更小
不需要額外的資源發現機制
在軟件技術演進中的長期的兼容性更好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章