rest是representational state tansfer的縮寫,可譯為「表現層狀態轉化」。restful是一種軟體架構風格,而不是標準,只是提供了一組設計原則和約束條件。主要用於客戶端和服務端互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。restful幾個特點為:資源、統一介面、url和無狀態。
restful中資源指的就是網路上的乙個實體,或者說是網路上的乙個具體資訊。它可以是一段文字、一張、一首歌曲一種服務,總之就是乙個具體的存在。資源總是通過某種載體反應其內容,文字可以用txt格式表現,也可以是html格式、xml格式,甚至可以採用二進位制格式。json是現在最常用的資源表示格式。
restful架構風格規定,資料的元操作,即crud也就是我們常說的增刪查改操作,分別對應http方法:get用來獲取資源,post用來新建資源(也可以用來更新資源),put用來更新資源,delete用來刪除資源,這樣統一了資料操作的介面,通過http方法,就可以完成對資料的所有增刪查改操作。
get(select):從伺服器取出資源(一項或多項)。
post(create):在伺服器新建乙個資源。
put(update):在伺服器更新資源(客戶端提供完整資源資料)。
patch(update):在伺服器更新資源(客戶端提供需要修改的資源資料)。
delete(delete):從伺服器刪除資源。
可以用乙個uri(統一資源識別符號)指向資源,也就是每個url對應乙個特定的資源。要獲取這個資源,訪問它的uri就可以,因此uri就餓成了每乙個資源的位址或識別符。一般每個資源至少有乙個uri與之對應,最典型的uri即url。
所謂無狀態,就是所有的資源都可以通過uri定位,而且這個定位與其他資源無關,也不會因為其他資源的變化而變化。
有狀態和無狀態的區別:
例如查詢員工的工資,如果查詢工資是需要登入系統,進入查詢工資頁面,執行相關操作後,獲取工資多少,則這種狀態是有狀態的,因為查詢工資的每一步操作都是依賴於前一步操作,只要前置操作不成功,後續操作就無法執行;如果輸入乙個uri就可以得到指定員工的工資,則這種情況是無狀態的,因為獲取工資不依賴於其他資源或狀態,且這種情況下,員工工資是乙個資源,由乙個uri與之對應,可以通過http中的get方法得到資源,這就是restful風格。
restful架構應該遵循統一介面原則,統一介面包含了一組受限的預定義的操作,不論什麼樣的資源,都是通過使用相同的介面進行資源訪問。介面應該使用標準的http方法比如post、get、put,並且遵循這些方法的語義。
在多次請求中,同一客戶端也不再需要依賴於同一伺服器,方便實現高可擴充套件和高可用性的服務端。但有時候我們會做出違反無狀態通訊原則的設計,例如利用cookie跟蹤某個服務端會話狀態。這意味著,瀏覽器隨各次請求發出去的cookie是被用於構建會話狀態的。
到這裡狀態轉移就已經很好理解了,會話狀態不是作為資源狀態儲存在服務端的,而是被客戶端作為應用狀態進行跟蹤的。客戶端應用狀態在服務端提供的超**的指引下發生變遷。服務端通過超**告訴客戶端當前狀態有哪些後續狀態可以進入。
理解restful風格介面
網路應用程式,分為前端和後端兩個部分。當前的發展趨勢,就是前端裝置層出不窮 手機 平板 桌面電腦 其他專用裝置.因此,必須有一種統一的機制,方便不同的前端裝置與後端進行通訊。這導致api構架的流行,甚至出現 api first 的設計思想。restful api是目前比較成熟的一套網際網路應用程式的...
對於RestFul編碼風格的理解
resultful風格 restful風格是一種資源定位以及資源操作的風格。它既不是某種必須遵循的標準,也不是大家都不能改動的協議,而是一種編碼風格。當我們在實際的業務開放當中使用到restful風格時,會使得我們的業務進展速度很大程度度的提高。主要功能 get 用於查詢資源 post 用於建立資源...
我所理解的Restful風格
目錄2.restful api設計規範 1 子網域名稱方式 盡量將api部署在專用網域名稱 會存在跨 域問題 2 url方式 api api很簡單url,如 v1 請求頭 跨域時,引發傳送多次請求 v1 zoos v1 animals v1 employeesget 查詢資料 從伺服器取出資源 一項...