RESTful概念
RESTful是一種理念蹲堂,一種設(shè)計規(guī)范搁料,并不是什么協(xié)議等或详。
REST,全稱Representational State Transfer加缘,直接翻譯就是:表現(xiàn)層狀態(tài)轉(zhuǎn)化鸭叙。但是這個缺少主語,實際上應(yīng)該是“資源在網(wǎng)絡(luò)中以某種表現(xiàn)形式進行狀態(tài)轉(zhuǎn)化”拣宏。
“資源”是RESTful中最核心的概念之一沈贝。在RESTful概念中,互聯(lián)網(wǎng)中的每一樣信息都可以定義為資源勋乾,比如文本宋下、圖片、音頻辑莫、視頻等学歧。而這些資源又都可以對應(yīng)一個特定的URI(統(tǒng)一資源定位符),URI為每一個資源的地址或獨一無二的識別符各吨。
表現(xiàn)層枝笨,針對上面的“資源”,我們要進行相應(yīng)的呈現(xiàn)揭蜒,而且可以采用多種的呈現(xiàn)形式横浑,而這些呈現(xiàn)形式就叫做“表現(xiàn)層”。eg:文本的呈現(xiàn)形式屉更,JSON格式徙融、XML格式、HTML格式等瑰谜。
狀態(tài)轉(zhuǎn)化欺冀,資源通常放在服務(wù)器端,而客戶端對服務(wù)器資源的增萨脑、刪隐轩、改、查等操作砚哗,讓資源狀態(tài)發(fā)生改變龙助。這個過程便是“ 狀態(tài)轉(zhuǎn)化”。
RESTful規(guī)范
在RESTful架構(gòu)中蛛芥,每個網(wǎng)址代表一種資源(resource)提鸟,所有網(wǎng)址請求接口中不能有動詞,只能有名詞,這點和數(shù)據(jù)庫設(shè)計風(fēng)格很像仅淑。
RESTful一般使用規(guī)范(大部分情況下這樣):
(1)每一個URI代表一種資源称勋;
(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層涯竟;
(3)客戶端通過四個HTTP動詞赡鲜,對服務(wù)器端資源進行操作,實現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"庐船。
HTTP方法 | 安全性 | 冪等性 | 接口說明 |
---|---|---|---|
GET | 安全 | 冪等 | 獲取資源(Read) |
POST | 不安全 | 非冪等 | 創(chuàng)建資源(Create) |
PUT | 不安全 | 冪等 | 更新資源(Update) |
DELETE | 不安全 | 冪等 | 刪除資源(Delete) |
RESTful例子
以用戶的增刪查改為例:
get : /user/list //獲取所有用戶信息
post:/user //創(chuàng)建用戶信息
put:/user/123 //更新用戶123的信息
get:/user/123 //獲取資源標(biāo)識(id)為123的用戶信息
delete:/user/123 //刪除資源標(biāo)識(id)為123的用戶信息
我在這里的沒有使用資源的復(fù)數(shù)形式银酬,如果使用資源的復(fù)數(shù)形式,查詢所有用戶還存在另一種表達筐钟,
get : /users //獲取所有用戶信息
單復(fù)數(shù)的資源形勢表達在這里不做討論揩瞪,只要能讓人正確理解就行,我個人一般只使用單數(shù)形式篓冲。
其次李破,資源的表達也是需要層級的
eg:
每個用戶下?lián)碛卸啾緯?/p>
get /user/123/book/list //查詢用戶123的書籍列表
get /user/123/book/3 //查詢用戶123的id為3的書
部門下有多個用戶
get /department/1/user/list //查詢id為1的部門的用戶列表
get /department/1/user/123 //查詢id為1的部門下的用戶123的信息