可怕的學(xué)術(shù)式解釋
了解了什么是REST,我們?cè)倏纯碦ESTful的實(shí)現(xiàn)。最近,使用 RPC 樣式架構(gòu)構(gòu)建的基于 SOAP 的 Web 服務(wù)成為實(shí)現(xiàn) SOA 最常用的方法。RPC 樣式的 Web 服務(wù)客戶端將一個(gè)裝滿數(shù)據(jù)的信封(包括方法和參數(shù)信息)通過(guò) HTTP 發(fā)送到服務(wù)器。服務(wù)器打開(kāi)信封并使用傳入?yún)?shù)執(zhí)行指定的方法。方法的結(jié)果打包到一個(gè)信封并作為響應(yīng)發(fā)回客戶端。客戶端收到響應(yīng)并打開(kāi)信封。每個(gè)對(duì)象都有自己獨(dú)特的方法以及僅公開(kāi)一個(gè) URI 的 RPC 樣式 Web 服務(wù),URI 表示單個(gè)端點(diǎn)。它忽略 HTTP 的大部分特性且僅支持 POST 方法。
一頭霧水有木有?
REST的定義
直譯
- REpresentational State Transfer :表現(xiàn)層狀態(tài)轉(zhuǎn)移
- 更全的術(shù)語(yǔ):Resource Representational State Transfer(資源在網(wǎng)絡(luò)中以某種形式進(jìn)行狀態(tài)轉(zhuǎn)移)
- Resource(資源):即數(shù)據(jù)
- Representational(表現(xiàn)形式):比如用JSON,XML,JPEG等
- State Transfer(狀態(tài)變化):通過(guò)HTTP動(dòng)詞實(shí)現(xiàn)
大咖描述的REST
- URL定位資源,用HTTP動(dòng)詞(GET,POST,DELETE,DETC)描述操作。
牛人給的解釋
- REST描述的是在網(wǎng)絡(luò)中client和server的一種交互形式。REST本身不實(shí)用,實(shí)用的是如何設(shè)計(jì)RESTful API(REST風(fēng)格的網(wǎng)絡(luò)接口)。
-
Server提供的RESTful API中,URL中只使用名詞來(lái)指定資源,原則上不使用動(dòng)詞。用HTTP協(xié)議里的動(dòng)詞來(lái)實(shí)現(xiàn)資源的添加,修改,刪除等操作。
例如:
Paste_Image.png
- 保證 HEAD 和 GET 方法是安全的,不會(huì)對(duì)資源狀態(tài)有所改變(污染,不推薦:GET /deleteProduct?id=1
- 資源的地址推薦用嵌套結(jié)構(gòu),如:GET /friends/10375923/profile
- 警惕返回結(jié)果的大小。如果過(guò)大,及時(shí)進(jìn)行分頁(yè)(pagination)或者加入限制(limit)。HTTP協(xié)議支持分頁(yè)(Pagination)操作,在Header中使用 Link 即可。
- 使用正確的HTTP Status Code表示訪問(wèn)狀態(tài)
- 在返回結(jié)果用明確易懂的文本
- 考慮安全性:盡量使用https
- 為什么要使用RESTful API
- RESTful可以通過(guò)一套統(tǒng)一的接口為 Web,iOS和Android提供服務(wù)
轉(zhuǎn)載于:https://www.zhihu.com/question/28557115
————
前端·tj
紙上得來(lái)終覺(jué)淺,絕知此事要躬行
