什麼是RESTful風格

什麼是RESTful風格

http不僅僅是傳輸協議,更是一種應用協議。REST,即Representational State Transfer的縮寫。意爲是"表現層狀態轉化"。RESTful表示一種風格,理解REST前需要理解資源,何謂資源,廣義的資源是指可以操作的所有對象。可能是一個系統資源,如txt、jgp、xml …,亦可以是諸如自己定義的虛擬集合的抽象,如books、usrs、times。RESTfutl代表一種簡潔、方便、快捷、高效、透明的架構,這取決於你怎樣組合。具有如下特點:

1、規範化接口訪問方式。這些http操作方法包括GET/POST/PUT/DELETE/OPTIONS等,每個操作方法都代表一個相同意義的操作,它向所有人透明地表明操作方式。比如GET只能讀取/拉數據,當然你也可以是添加數據,但建議不要這麼做,不然這樣就失去了REST的意義。

1) GET 讀取

2) POST 添加

3) PUT 修改

4) 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三個頭字段,可以讓瀏覽器緩存資源一段時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章