1. 程式人生 > >秒懂什麼是REST和RESTful

秒懂什麼是REST和RESTful

REST風格的介面,這樣的詞彙總是出現在耳邊,然後又沒有完全的理解,您是不是有和我相同的疑問呢?那我們一起來一探究竟吧!

REST是Representational State Transfer
的首字母,翻譯成中文就是表現層狀態轉移,但一般人是弄不懂它的具體含義的。

知乎有位大神Ivony解釋的非常清楚:
用URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。


在設計web介面的時候,REST主要是用於定義介面名,介面名一般是用名詞寫,不用動詞,那怎麼表達“獲取”或者“刪除”或者“更新”這樣的操作呢——用請求型別來區分。
比如,我們有一個friends介面,對於“朋友”我們有增刪改查四種操作,怎麼定義REST介面?
增加一個朋友,uri: generalcode.cn/v1/friends 介面型別:POST
刪除一個朋友,uri: generalcode.cn/va/friends 介面型別:DELETE
修改一個朋友,uri: generalcode.cn/va/friends 介面型別:PUT
查詢朋友,uri: generalcode.cn/va/friends 介面型別:GET


上面我們定義的四個介面就是符合REST協議的,請注意,這幾個介面都沒有動詞,只有名詞friends,都是通過Http請求的介面型別來判斷是什麼業務操作。


舉個反例:generalcode.cn/va/deleteFriends 該介面用來表示刪除朋友,這就是不符合REST協議的介面。


一般介面的返回值是JSON或者XML型別的,筆者在網際網路的工作經驗一般都是JSON型別的。


用HTTP Status Code傳遞Server的狀態資訊。比如最常用的 200 表示成功,500 表示Server內部錯誤,403表示Bad Request等。(反例:傳統web開發返回的狀態碼一律都是200,其實不可取。)


那這種風格的介面有什麼好處呢?

前後端分離。前端拿到資料只負責展示和渲染,不對資料做任何處理。

後端處理資料並以JSON格式傳輸出去,定義這樣一套統一的介面,在web,ios,android三端都可以用相同的介面,是不是很爽?!