複製鏈接
請複製以下鏈接發送給好友

RESTful

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

RESTful相關定義

RESTfulREST

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並沒有一個明確的標準,而更像是一種設計的風格。 [2] 

RESTful原則條件

REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。
Web 應用程序最重要的 REST 原則是,客户端和服務器之間的交互在請求之間是無狀態的。從客户端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啓,客户端不會得到通知。此外,無狀態請求可以由任何可用服務器回答,這十分適合雲計算之類的環境。客户端可以緩存數據以改進性能。
在服務器端,應用程序狀態和功能可以分為各種資源。資源是一個有趣的概念實體,它向客户端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個唯一的地址。所有資源都共享統一的接口,以便在客户端和服務器之間傳輸狀態。使用的是標準的 HTTP 方法,比如 GET、PUT、POSTDELETEHypermedia 是應用程序狀態的引擎,資源表示通過超鏈接互聯。

RESTful特點

RESTFUL特點包括:
1、每一個URI代表1種資源;
2、客户端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),PUT用來更新資源,DELETE用來刪除資源;
3、通過操作資源的表現形式來操作資源;
4、資源的表現形式是XML或者HTML;
5、客户端與服務端之間的交互在請求之間是無狀態的,從客户端到服務端的每個請求都必須包含理解請求所必需的信息。 [1] 

RESTfulRESTful與 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 都使用這種混合架構。 [3] 

RESTfulRESTful架構

RESTful架構是對MVC架構改進後所形成的一種架構,通過使用事先定義好的接口與不同的服務聯繫起來。在RESTful架構中,瀏覽器使用POST,DELETE,PUT和GET四種請求方式分別對指定的URL資源進行增刪改查操作。因此,RESTful是通過URI實現對資源的管理及訪問,具有擴展性強、結構清晰的特點。
RESTful架構將服務器分成前端服務器和後端服務器兩部分,前端服務器為用户提供無模型的視圖;後端服務器為前端服務器提供接口。瀏覽器向前端服務器請求視圖,通過視圖中包含的AJAX函數發起接口請求獲取模型。
項目開發引入RESTful架構,利於團隊並行開發。在RESTful架構中,將多數HTTP請求轉移到前端服務器上,降低服務器的負荷,使視圖獲取後端模型失敗也能呈現。但RESTful架構卻不適用於所有的項目,當項目比較小時無需使用RESTful架構,項目變得更加複雜。 [4] 
參考資料