[收藏]REST -维基百科
表征狀態(tài)轉(zhuǎn)移(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風格。
目前在三種主流的Web服務實現(xiàn)方案中,因為REST模式的Web服務與復雜的SOAP和XML-RPC對比來講明顯的更加簡潔,越來越多的web服務開始采用REST風格設(shè)計和實現(xiàn)。例如,Amazon.com提供接近REST風格的Web服務進行圖書查找;雅虎提供的Web服務也是REST風格的。
宗旨
REST 從資源的角度來觀察整個網(wǎng)絡,分布在各處的資源由URI確定,而客戶端的應用通過URI來獲取資源的表征。獲得這些表征致使這些應用程序轉(zhuǎn)變了其狀態(tài)。隨著不斷獲取資源的表征,客戶端應用不斷地在轉(zhuǎn)變著其狀態(tài),所謂表征狀態(tài)轉(zhuǎn)移(Representational State Transfer)。
這一觀點不是憑空臆造的,而是通過觀察當前Web互聯(lián)網(wǎng)的運作方式而抽象出來的。Roy Fielding 認為,
“
設(shè)計良好的網(wǎng)絡應用表現(xiàn)為一系列的網(wǎng)頁,這些網(wǎng)頁可以看作的虛擬的狀態(tài)機,用戶選擇這些鏈接導致下一網(wǎng)頁傳輸?shù)接脩舳苏宫F(xiàn)給使用的人,而這正代表了狀態(tài)的轉(zhuǎn)變。
”
要點及標準
需要注意的是,REST是設(shè)計風格而不是標準。REST通常基于使用HTTP,URI,和XML以及HTML這些現(xiàn)有的廣泛流行的協(xié)議和標準。
- 資源是由URI來指定。
- 對資源的操作包括獲取、修改、創(chuàng)建和刪除資源,這些操作正好對應HTTP協(xié)議提供的GET、POST、PUT和DELETE方法。
- 通過操作資源的表現(xiàn)形式來操作資源。
- 資源的表現(xiàn)形式則是XML或者HTML,取決于讀者是機器還是人,是消費web服務的客戶軟件還是web瀏覽器。當然也可以是任何其他的格式。
[REST的要求
- 客戶端和服務器結(jié)構(gòu)
- 連接協(xié)議具有無狀態(tài)性
- 能夠利用Cache機制增進性能
- 層次化的系統(tǒng)
- 隨需代碼 - Javascript (可選)
- 關(guān)于狀態(tài)
應該注意區(qū)別應用的狀態(tài)和連接協(xié)議的狀態(tài)。REST對于連接的無狀態(tài)性實際上要求每次經(jīng)過無狀態(tài)的連接協(xié)議傳送的信息必須包含應用中所有的狀態(tài)信息。
RESTful Web 服務
RESTful Web 服務(也稱為 RESTful Web API)是一個使用HTTP并遵循REST原則的Web服務。它從以下三個方面資源進行定義:
- URI,比如:http://example.com/resources/。
- Web服務接受與返回的互聯(lián)網(wǎng)媒體類型,比如:JSON,XML ,YAML 等。
- Web服務在該資源上所支持的一系列請求方法(比如:POST,GET,PUT或DELETE)。
該表列出了在實現(xiàn)RESTful Web 服務時HTTP請求方法的典型用途。
HTTP 請求方法在RESTful Web 服務中的典型應用[1]
資源
GET
PUT
POST
DELETE
一組資源的URI,比如http://example.com/resources/
列出 URI,以及該資源組中每個資源的詳細信息(后者可選)。
使用給定的一組資源替換當前整組資源。
在本組資源中創(chuàng)建/追加一個新的資源。 該操作往往返回新資源的URL。
刪除 整組資源。
單個資源的URI,比如http://example.com/resources/142
獲取 指定的資源的詳細信息,格式可以自選一個合適的網(wǎng)絡媒體類型(比如:XML、JSON等)
替換/創(chuàng)建 指定的資源。并將其追加到相應的資源組中。
把指定的資源當做一個資源組,并在其下創(chuàng)建/追加一個新的元素,使其隸屬于當前資源。
刪除 指定的元素。
PUT 和 DELETE 方法是冪等方法。GET方法是安全方法 (不會對服務器端有修改,因此當然也是冪等的)。
不像基于SOAP的Web服務,RESTful Web服務并沒有的“正式”標準[2]。 這是因為REST是一種架構(gòu),而SOAP只是一個協(xié)議。雖然REST不是一個標準,但在實現(xiàn)RESTful Web服務時可以使用其他各種標準(比如HTTP,URL,XML,PNG等)。
實現(xiàn)舉例
例如,一個簡單的網(wǎng)絡商店應用,
列舉所有商品,
GET http://www.store.com/products呈現(xiàn)某一件商品,
GET http://www.store.com/product/12345下單購買,
POST http://www.store.com/order <purchase-order><item> ... </item> </purchase-order>REST的優(yōu)點
- 可以利用緩存Cache來提高響應速度
- 通訊本身的無狀態(tài)性可以讓不同的服務器的處理一系列請求中的不同請求,提高服務器的擴展性
- 瀏覽器即可作為客戶端,簡化軟件需求
- 相對于其他疊加在HTTP協(xié)議之上的機制,REST的軟件依賴性更小
- 不需要額外的資源發(fā)現(xiàn)機制
- 在軟件技術(shù)演進中的長期的兼容性更好
實現(xiàn)
- Ruby on Rails1.2以后的版本支持REST model。
- JBoss RESTEasyJBoss的REST實現(xiàn)
參考資料
- http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Roy Fielding的博士論文《Architectural Styles and the Design of Network-based Software Architectures》
- http://www.xml.com/pub/a/2002/02/06/rest.html 第二代web服務,Paul Prescod。
轉(zhuǎn)載于:https://www.cnblogs.com/ac1985482/archive/2013/02/25/2932270.html
總結(jié)
以上是生活随笔為你收集整理的[收藏]REST -维基百科的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找回创新能力 才是苹果的救命稻草
- 下一篇: mac中的放置java类库扩展的位置