概述
REST 從資源的角度來觀察整個網(wǎng)絡,分布在各處的資源由URI確定,而客戶端的應用通過URI來獲取資源的表示方式。獲得這些表示致使這些應用程序轉變了其狀態(tài)。隨著不斷獲取資源的表示方式,客戶端應用不斷地在轉變著其狀態(tài),所謂表述性狀態(tài)轉移(Representational State Transfer)。
這一觀點不是憑空臆造的,而是通過觀察當前Web互聯(lián)網(wǎng)的運作方式而抽象出來的。Roy Fielding 認為,“設計良好的網(wǎng)絡應用表現(xiàn)為一系列的網(wǎng)頁,這些網(wǎng)頁可以看作的虛擬的狀態(tài)機,用戶選擇這些鏈接導致下一網(wǎng)頁傳輸?shù)接脩舳苏宫F(xiàn)給使用的人,而這正代表了狀態(tài)的轉變?!?br>
REST是設計風格而不是標準。REST通?;谑褂肏TTP,URI,和XML以及HTML這些現(xiàn)有的廣泛流行的協(xié)議和標準
- 資源是由URI來指定。
- 對資源的操作包括獲取、創(chuàng)建、修改和刪除資源,這些操作正好對應HTTP協(xié)議提供的GET、POST、PUT和DELETE方法
- 通過操作資源的表現(xiàn)形式來操作資源。
- 資源的表現(xiàn)形式則是XML或者HTML,取決于讀者是機器還是人,是消費web服務的客戶軟件還是web瀏覽器。當然也可以是任何其他的格式。
HTTP操作
HTTP 請求方法在RESTful Web 服務中的典型應用
資源:
- 一組資源的URI,比如http://example.com/resources/
- GET:列出 URI,以及該資源組中每個資源的詳細信息(后者可選)。
- PUT:使用給定的一組資源替換當前整組資源。
- POST:在本組資源中創(chuàng)建/追加一個新的資源。 該操作往往返回新資源的URL。
- DELETE:刪除 整組資源。
- 單個資源的URI,比如http://example.com/resources/142
- GET:獲取 指定的資源的詳細信息,格式可以自選一個合適的網(wǎng)絡媒體類型(比如:XML、JSON等)
- PUT:替換/創(chuàng)建 指定的資源。并將其追加到相應的資源組中
- POST:把指定的資源當做一個資源組,并在其下創(chuàng)建/追加一個新的元素,使其隸屬于當前資源
- DELETE:刪除 指定的元素
- 備注:
PUT 和 DELETE 方法是冪等方法。GET方法是安全方法 (不會對服務器端有修改,因此也是冪等的)。冪等方法就是無論進行幾次操作結果都不會改變的安全方法