網(wǎng)站建設關于使用REST架構的方法簡析,深圳
網(wǎng)站建設公司提醒REST (Representational State Transfer,具象狀態(tài)轉移)是一種用于Web程序設計的架構風格。REST是Roy Thomas Fielding在他的博士論文Architectural Styles and the Design of Network-based SoftwareArchitectures(架構風格和基于網(wǎng)絡的軟件架構設計)中首先提出的。REST定義了指導現(xiàn)代Web程序接口設計與開發(fā)的一系列約束。

REST的拗口的名字暗示了它的設計思想是以狀態(tài)轉移為核心的。REST把網(wǎng)頁看成一個虛擬狀態(tài)機 (Virtual State-machine),用戶通過選擇不同的鏈接執(zhí)行不同的操作,從而引發(fā)狀態(tài)轉換,將下一個頁面呈現(xiàn)給用戶,以便用戶在使用程序時能明確感受到狀態(tài)的變化,并通過狀態(tài)變化的邏輯引導用戶進行下一步操作。
這和許多程序員認為的REST就是一個接口的編寫規(guī)范不同,REST強調(diào)的是如何把應用程序的狀態(tài)變化和網(wǎng)頁的鏈接有效地無縫融合,而不僅僅是約定應用程序的接口使用POST或GET編寫。接口的約束僅僅是REST約束中的一部分。在REST中,具象狀態(tài)轉移就是指資源狀態(tài)的變化,REST關注的是資源
(Resource)的具象。所謂“資源”,代表一個網(wǎng)絡上的實體,它可以是一段文本、一張圖片或者一個對象,并且可以通過統(tǒng)一資源定位符(Uniform Resourceldentifier,URI)指向它。要獲取這個資源,直接通過URl訪問即可,因此URl就成了每一個資源地址獨一無二的識別符。
對于網(wǎng)站建設的應用程序來說,資源不僅是一段文本或一張圖片,它是一個個對象,是用于解決領域問題的對象。所謂具象狀態(tài)就是這些對象的狀態(tài)。對于和網(wǎng)絡結合的Web應用程序來說,這些對象也作為資源向用戶呈現(xiàn),只是呈現(xiàn)的是對象狀態(tài)的快照,也就是對象的具象。同樣,用戶通過HTTP的不同請求方法(POST、PUT和DELETE)也會引發(fā)對象狀態(tài)的改變,也就是具象狀態(tài)的轉移。
和其他網(wǎng)站建設架構風格一樣,REST也是由一系列約束組成。其中最主要的約束是統(tǒng)一接口(Uniform Interface)的約束,即組件之間要使用一個統(tǒng)一的接口,這個統(tǒng)一的接口一般用HTTP的4個方法(GET、POST、PUT和DELETE)。統(tǒng)一接口約束下還有4個子約束,這4個子約束共同決定REST架構風格的核心特征。具體說明如下:
·資源的識別(Identification of Resources) :每個資源都有各自的標識符。客戶端在請求時需要指定該標識符??蛻舳双@取的是資源的具象或者說狀態(tài),這些狀態(tài)使用HTML、XML或JSON等格式描述。
·通過表述操作資源(Manipulation of Resources Through Representations):客戶端操作的是資源的表述,而不是資源本身。這些表述可以是資源狀態(tài)的獲取,或者是對資源狀態(tài)的修改。
·自描述消息 (Self-descriptive Messages) :每條消息都包含足夠的信息來描述如何處理該消息,也就是包含對狀態(tài)轉移的鏈接(URI)。
·超媒體作為應用狀態(tài)引擎(Hypermedia As The Engine Of Application State,HATEOAS) :客戶端通過服務器提供的超媒體內(nèi)容來了解如何操作表述,通過超媒體中的鏈接,就能引導用戶進行下一步操作。
對于REST架構模式來說,經(jīng)常發(fā)生的誤解是使用HTTP方法對資源實現(xiàn)CURD(增、刪、改、查)操作的封裝。兩者在形式上確實很相似。REST的核心概念在于“超媒體作為應用狀態(tài)引擎”,而不僅僅是實現(xiàn)對資源的CURD。
超媒體在本質(zhì)上與常用的超文本(Hypertext)是一致的,是指一種采用非線性網(wǎng)狀結構對塊狀多媒體信息(包括文本、圖像、視頻等)進行組織和管理的技術。HATEOAS約束要求在超媒體中必須包含對資源操作的描述及鏈接。通過這些指向資源的超媒體和鏈接就支撐了能夠映射應用程序狀態(tài)的虛擬狀態(tài)機。下面是一個購物商城中請求商品詳情的返回信息的例子。
"id”: 1,
"body":
--- i 主描述商品的詳細信息、"links" :[
{
"re1" : "se1f",
"href": http : / i xxx / commodityl {id,"method": "GET"
},
"re1" : " commodity list",
"href" : http : i i xxx l commoditysi"method""GET
}
{
"re1" : "add to cart",
"href" : http :ii xxx l cart/?id= {id}"method"PUT"
}
.....
]
}
好了,
深圳網(wǎng)站建設公司本文關于“
網(wǎng)站建設關于使用REST架構的方法簡析”的建站知識就分享到這里,謝謝關注,博納網(wǎng)絡編輯整理。