RESTful

RESTful

網絡應用程序的設計風格和開發方式
RESTFUL是一種網絡應用程序的設計風格和開發方式,基于HTTP,可以使用XML格式定義或JSON格式定義。RESTFUL适用于移動互聯網廠商作為業務接口的場景,實現第三方OTT調用移動網絡資源的功能,動作類型為新增、變更、删除所調用資源。[1]
  • 中文名:RESTful
  • 外文名:Representational State Transfer
  • 所屬學科:計算機科學技術
  • 創始人:Roy Fielding
  • 實 質:一種網絡應用程序的設計風格和開發方式
  • 應用場景:适用于移動互聯網廠商作為業務接口的場景

相關定義

REST

REST(英文:Representational State Transfer,簡稱REST)描述了一個架構樣式的網絡系統,比如web應用程序。它首次出現在2000年Roy Fielding的博士論文中,Roy Fielding是HTTP規範的主要編寫者之一。在目前主流的三種Web服務交互方案中,REST相比于SOAP(Simple Object Access protocol,簡單對象訪問協議)以及XML-RPC更加簡單明了,無論是對URL的處理還是對Payload的編碼,REST都傾向于用更加簡單輕量的方法設計和實現。值得注意的是REST并沒有一個明确的标準,而更像是一種設計的風格。

原則條件

REST指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是RESTful。

Web應用程序最重要的REST原則是,客戶端和服務器之間的交互在請求之間是無狀态的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀态請求可以由任何可用服務器回答,這十分适合雲計算之類的環境。客戶端可以緩存數據以改進性能。

在服務器端,應用程序狀态和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用URI(Universal Resource Identifier)得到一個唯一的地址。所有資源都共享統一的接口,以便在客戶端和服務器之間傳輸狀态。使用的是标準的HTTP方法,比如GET、PUT、POST和DELETE。Hypermedia是應用程序狀态的引擎,資源表示通過超鍊接互聯。

特點

RESTFUL特點包括:

1、每一個URI代表1種資源;

2、客戶端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來獲取資源,POST用來新建資源(也可以用于更新資源),PUT用來更新資源,DELETE用來删除資源;

3、通過操作資源的表現形式來操作資源;

4、資源的表現形式是XML或者HTML;

5、客戶端與服務端之間的交互在請求之間是無狀态的,從客戶端到服務端的每個請求都必須包含理解請求所必需的信息。

RESTful與RPC

使用RPC樣式架構構建的基于SOAP的Web服務成為實現SOA最常用的方法。RPC樣式的Web服務客戶端将一個裝滿數據的信封(包括方法和參數信息)通過HTTP發送到服務器。服務器打開信封并使用傳入參數執行指定的方法。方法的結果打包到一個信封并作為響應發回客戶端。客戶端收到響應并打開信封。每個對象都有自己獨特的方法以及僅公開一個URI的RPC樣式Web服務,URI表示單個端點。它忽略HTTP的大部分特性且僅支持POST方法。

由于輕量級以及通過HTTP直接傳輸數據的特性,Web服務的RESTful方法已經成為最常見的替代方法。可以使用各種語言(比如Java程序、Perl、Ruby、Python、PHP和Javascript[包括Ajax])實現客戶端。RESTful Web服務通常可以通過自動客戶端或代表用戶的應用程序訪問。但是,這種服務的簡便性讓用戶能夠與之直接交互,使用它們的Web浏覽器構建一個GET URL并讀取返回的内容。

在REST樣式的Web服務中,每個資源都有一個地址。資源本身都是方法調用的目标,方法列表對所有資源都是一樣的。這些方法都是标準方法,包括HTTP GET、POST、PUT、DELETE,還可能包括HEAD和OPTIONS。

在RPC樣式的架構中,關注點在于方法,而在REST樣式的架構中,關注點在于資源——将使用标準方法檢索并操作信息片段(使用表示的形式)。資源表示形式在表示形式中使用超鍊接互聯。

Leonard Richardson和Sam Ruby在他們的著作RESTful Web Services中引入了術語REST-RPC混合架構。REST-RPC混合Web服務不使用信封包裝方法、參數和數據,而是直接通過HTTP傳輸數據,這與REST樣式的Web服務是類似的。但是它不使用标準的HTTP方法操作資源。它在HTTP請求的URI部分存儲方法信息。好幾個知名的Web服務,比如Yahoo的Flickr API和Delicious API都使用這種混合架構。

RESTful架構

RESTful架構是對MVC架構改進後所形成的一種架構,通過使用事先定義好的接口與不同的服務聯系起來。在RESTful架構中,浏覽器使用POST,DELETE,PUT和GET四種請求方式分别對指定的URL資源進行增删改查操作。因此,RESTful是通過URI實現對資源的管理及訪問,具有擴展性強、結構清晰的特點。

RESTful架構将服務器分成前端服務器和後端服務器兩部分,前端服務器為用戶提供無模型的視圖;後端服務器為前端服務器提供接口。浏覽器向前端服務器請求視圖,通過視圖中包含的AJAX函數發起接口請求獲取模型。

項目開發引入RESTful架構,利于團隊并行開發。在RESTful架構中,将多數HTTP請求轉移到前端服務器上,降低服務器的負荷,使視圖獲取後端模型失敗也能呈現。但RESTful架構卻不适用于所有的項目,當項目比較小時無需使用RESTful架構,項目變得更加複雜。

相關詞條

相關搜索

其它詞條