首先明確一點整吆,restful不是一個單詞而是幾個單詞的首字母拼接成的,即REST -- REpresentational State Transfer 翻譯過來就是:表現(xiàn)層狀態(tài)轉移拧略。表現(xiàn)層狀態(tài)轉移?你看看你看看瘪弓,這說的是人話嗎垫蛆?
@Ivony 老師的一句話概括很精辟:
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作腺怯。
簡略解釋
- REST描述的是在網(wǎng)絡中client和server的一種交互形式袱饭;REST本身不實用,實用的是如何設計 RESTful API(即REST風格的網(wǎng)絡接口)呛占;
- Server提供的RESTful API中虑乖,URL中只使用名詞來指定資源,原則上不使用動詞晾虑≌钗叮“資源”是REST架構或者說整個網(wǎng)絡處理的核心。比如:
http://api.mj.com/v1/newsfeed: 獲取某人的新鮮;
http://api.mj.com/v1/friends: 獲取某人的好友列表;
http://api.mj.com/v1/profile]: 獲取某人的詳細信息; - 用HTTP協(xié)議里的動詞來實現(xiàn)資源的添加帜篇,修改糙捺,刪除等操作。即通過HTTP動詞來實現(xiàn)資源的狀態(tài)扭轉:
GET 用來獲取資源坠狡,
POST 用來新建資源(也可以用于更新資源)继找,
PUT 用來更新資源,
DELETE 用來刪除資源逃沿。比如:
DELETE http://api.mj.com/v1/friends: 刪除某人的好友 (在http parameter指定好友id)
POST http://api.mj.com/v1/friends: 添加好友
UPDATE http://api.mj.com/v1/profile: 更新個人資料
禁止使用: GET http://api.mj.com/v1/deleteFriend 圖例:
restful-api-best-practices.jpg
- Server和Client之間傳遞某資源的一個表現(xiàn)形式,比如用JSON幻锁,XML傳輸文本凯亮,或者用JPG,WebP傳輸圖片等哄尔。當然還可以壓縮HTTP傳輸時的數(shù)據(jù)(on-wire data compression)假消。
- 用 HTTP Status Code傳遞Server的狀態(tài)信息。比如最常用的 200 表示成功岭接,500 表示Server服務器內部錯誤等富拗。
為什么使用RESTful API?
大家都知道"古代"網(wǎng)頁是前端后端融在一起的臼予,比如之前的PHP,JSP等啃沪。在之前的桌面時代問題不大粘拾,但是近年來移動互聯(lián)網(wǎng)的發(fā)展,各種類型的Client層出不窮创千,Web端不再用之前典型的PHP或JSP架構缰雇,而是改為前段渲染和附帶處理簡單的業(yè)務邏輯。RESTful可以通過一套統(tǒng)一的接口為 Web追驴,iOS和Android平等提供服務械哟。另外對于廣大平臺來說,比如微博開放平臺殿雪,微信公共平臺等暇咆,它們不需要有顯式的前端,只需要一套提供服務的接口丙曙,于是RESTful更是它們最好的選擇糯崎。所以如何正確地理解 RESTful 架構和設計好RESTful API就顯得尤為重要。