representational state transfer 表現層狀態轉化( 資源定位及資源操作)
表象層面說就是通過get,post,put,delete方式來實現前後臺通訊的一種輕量級,跨平台,跨語言架構設計風格的web服務
http不僅僅是傳輸協議,更是一種應用協議。rest,即representational state transfer的縮寫。意為是"表現層狀態轉化"。restful表示一種風格,理解rest前需要理解資源,何謂資源,廣義的資源是指可以操作的所有物件。可能是乙個系統資源,如txt、jgp、xml …,亦可以是諸如自己定義的虛擬集合的抽象,如books、usrs、times。restfutl代表一種簡潔、方便、快捷、高效、透明的架構,這取決於你怎樣組合。具有如下特點:
1、規範化介面訪問方式。這些http操作方法包括get/post/put/delete/options等,每個操作方法都代表乙個相同意義的操作,它向所有人透明地表明操作方式。比如get只能讀取/拉資料,當然你也可以是新增資料,但建議不要這麼做,不然這樣就失去了rest的意義。
get 讀取
post 新增
put 修改
delete 刪除
2、資源標識唯一。通過uri表示乙個資源名稱,形式/resource/patch。如/users,表示使用者的組合,或使用者群。當然還可以繼續標識某個具體的乙個使用者,/users/11,表示id為11的使用者。當然,你也可以又用一組/usrgroup/11的uri代表操作使用者組,不過不建議這麼做,因為這樣從字面上重複了/users/11資源表示的內容。乙個資源uri總是包含第一條實現的方法:
get /users/11
post /users/11
put /users/11
delete /users/11
當然,僅有這些還不足以包括資源操作的所有需求,所以還可以包含請求引數,如get /users?type=list&page=1。
3、狀態的轉化。這就是rest的真實含義,指它允許資源uri具有不同的表現形式。同乙個uri,根據不同請求方式,執行的動作不同;還可以根據請求的header accept的不同返回不同的結果,如text/html、text/css、text/xml等等。也可以理解為body不同。如查詢快遞一般,可以上次查詢,物品還在倉庫,而過一段時間已經在路上了。它表示的是乙個互動過程。
4、所有資訊都包含在當前請求中。請求的方式包含在 request header的method中,還可以包含accept、accept-encoding、accept-language,使用authentication、cookie等資訊表明身份。同樣,服務端通過傳送content-length、content-type響應執**況。最重要的是,需要返回status code通知執行狀態,如200 201 400 404 500等http code。rest認為,所有資訊都能通過請求一次性傳送,而不必再採用方式儲存狀態,請求的資訊本身已經說明了請求的意義。
5、無狀態性。這是rest最重要的特性之一,這個狀態指的是客戶端與服務端無需為每次儲存請求狀態,客戶端請求不必考慮當前狀態,不必考慮上下文。具體上說,就是不必使用session等工具跟蹤、儲存請求的特殊性。比如,無論是誰,從**傳送,幾時傳送,對同乙個uri資源傳送請求的結果都是一樣的。據傳,這樣的設計是為當一台伺服器宕機時,另一台伺服器可以無差別地響應對方的請求。客戶端請求只認uri,而不需理後台的設計。
實際上,在如今執行的restful設計當中,完全能執行這個要求的很少,最徹底的雲服務,大部份為restful-like的風格。
6、可實現請求快取。通過快取減少請求次數,在http響應裡利用cache-control、expires、last-modified三個頭欄位,可以讓瀏覽器快取資源一段時間。
什麼是restful風格
傳統的url都是 xx 是什麼都可以猜出來,後來加密之後傳送到後台,然後就出現了所謂的rest,比較流行,但是 有好有壞,用起來靈活的東西 也比較複雜 就像是這個鏈結 最後的數字是它的id或者乙個id的對映,這樣在url裡的資料可以傳到request裡面被後台程式獲取。我理解的restful是 1....
什麼是RESTful風格
http不僅僅是傳輸協議,更是一種應用協議。rest,即representational state transfer的縮寫。意為是 表現層狀態轉化 restful表示一種風格,理解rest前需要理解資源,何謂資源,廣義的資源是指可以操作的所有物件。可能是乙個系統資源,如txt jgp xml 亦可...
什麼RESTful風格API
一 url 設計 1.1 動詞 賓語 restful 的核心思想就是,客戶端發出的資料操作指令都是 動詞 賓語 的結構。比如,get articles這個命令,get是動詞,articles是賓語。動詞通常就是五種 http 方法,對應 crud 操作。get 讀取 read post 新建 cre...