表徵狀態轉移(英文:representational state transfer,簡稱rest)是roy fielding博士在2023年他的博士**中提出來的一種軟體架構風格。
目前在三種主流的web服務實現方案中,因為rest模式的web服務與複雜的soap和xml-rpc對比來講明顯的更加簡潔,越來越多的web服務開始採用rest風格設計和實現。例如,amazon.com提供接近rest風格的web服務進行圖書查詢;雅虎提供的web服務也是rest風格的。
宗旨rest 從資源的角度來觀察整個網路,分布在各處的資源由uri確定,而客戶端的應用通過uri來獲取資源的表徵。獲得這些表徵致使這些應用程式轉變了其狀態。隨著不斷獲取資源的表徵,客戶端應用不斷地在轉變著其狀態,所謂表徵狀態轉移(representational state transfer)。
這一觀點不是憑空臆造的,而是通過觀察當前web網際網路的運作方式而抽象出來的。roy fielding 認為,
設計良好的網路應用表現為一系列的網頁,這些網頁可以看作的虛擬的狀態機,使用者選擇這些鏈結導致下一網頁傳輸到使用者端展現給使用的人,而這正代表了狀態的轉變。
要點及標準
需要注意的是,rest是設計風格而不是標準。rest通常基於使用http,uri,和xml以及html這些現有的廣泛流行的協議和標準。
[rest的要求
應該注意區別應用的狀態和連線協議的狀態。rest對於連線的無狀態性實際上要求每次經過無狀態的連線協議傳送的資訊必須包含應用中所有的狀態資訊。
restful web 服務
restful web 服務(也稱為 restful web api)是乙個使用http並遵循rest原則的web服務。它從以下三個方面資源進行定義:
該表列出了在實現restful web 服務時http請求方法的典型用途。
http 請求方法在restful web 服務中的典型應用[1]
資源
get
put
post
delete
一組資源的uri,比如
列出uri,以及該資源組中每個資源的詳細資訊(後者可選)。
使用給定的一組資源替換當前整組資源。
在本組資源中建立/追加乙個新的資源。 該操作往往返回新資源的url。
刪除整組資源。
單個資源的uri,比如142
獲取指定的資源的詳細資訊,格式可以自選乙個合適的網路**型別(比如:xml、json等)
替換/建立指定的資源。並將其追加到相應的資源組中。
把指定的資源當做乙個資源組,並在其下建立/追加乙個新的元素,使其隸屬於當前資源。
刪除指定的元素。
put 和 delete 方法是冪等方法。get方法是安全方法 (不會對伺服器端有修改,因此當然也是冪等的)。
不像基於soap的web服務,restful web服務並沒有的「正式」標準[2]
。 這是因為rest是一種架構,而soap只是乙個協議。雖然rest不是乙個標準,但在實現restful web服務時可以使用其他各種標準(比如http,url,xml,png等)。
實現舉例
例如,乙個簡單的網路商店應用,
列舉所有商品,
get呈現某一件商品,
get下單購買,
postrest的優點...
實現參考資料
^richardson, leonard; ruby, sam, restful web services, o'reilly. 2007 ((may 8, 2007)), isbn
0596529260
^elkstein, m. what is rest?
. retrieved on 2009-07-04.
WIKI 維基百科
今天.我又了解了乙個新的東東.wiki.wiki一詞源自夏威夷語的 wee kee wee kee 本是 快點快點 之意。在這裡wiki指的是一種超文字系統,系支援那些面向社群的協作式寫作,同時也包括一組支援這種寫作的輔助工具。有人認為,wiki系統屬於一種人類知識的網路系統,我們可以在web的基礎...
DevOps 維基百科
3 月,跳不動了?devops development和operations的組合詞 是一種重視 軟體開發人員 dev 和 it運維技術人員 ops 之間溝通合作的文化 運動或慣例。透過自動化 軟體交付 和 架構變更 的流程,來使得構建 測試 發布軟體能夠更加地快捷 頻繁和可靠。1 可以把devop...
維基百科 MediaWiki API 解析
使用開放的 api 做乙個自己的小專案,是乙個很好的學習方法。但好像開放的 api 選擇並不多。這裡給大家多乙個選擇,簡單介紹一下維基百科使用的 mediawiki api。先簡單介紹幾個容易混淆的概念。wiki 是一種在網路上開放且可供多人協同創作的超文字系統。wiki 站點可以由多人維護,不同人...