一.相關概念的基本理解:html
在學習這個框架以前先要搞清楚幾個概念:json
REST是一種設計風格(網絡應用架構), 中文名稱是表現層(表徵)狀態轉轉化,其中表現層指的是資源的表現層,api
資源呈現出來的形式稱做爲表現層(好比文本能夠是text格式表現,也能夠是html格式,json格式,XML格式).跨域
URI只表明資源的位置,具體表現形式, 應該在HTTP請求的頭信息中用Accept和Content-Type字段指定.數組
狀態轉化:互聯網通訊協議http協議協議是無狀態協議,意味着全部狀態都保存在服務器,若是客戶端要操做服務器,必須經過某種手段,讓服務器端發生狀態轉化,這種轉化緩存
是創建在表現層之上的,故稱作爲表現層狀態轉化。服務器
在http協議裏,get,post,put,delete分別對應四種基本操做(獲取資源,新建資源,更新資源,刪除資源)網絡
二.Restful架構架構
六個主要特色:app
面向資源;(Rest架構設計以資源抽象核心展開)
可尋址;(每一個資源在Web上都有本身的地址)
連通性;(每一個資源非孤立的,能夠經過超連接將資源關聯起來)
無狀態;(Rest架構的約束,同下)
統一接口;
超文本驅動;(資源之間經過超連接相互關聯,超連接既表明資源之間的關係,也表明可執行狀態的遷移),又叫「將超媒體做爲應用狀態的引擎。
三.Restful架構的優勢
1.簡單性;
對於開發,測試,運維人員來講都會很簡單,能夠充分利用Http服務端和客戶端庫,Web功能性測試工具,http緩存,http代理服務器,防火牆等。
2.可伸縮性;
充分利用好通訊鏈各個位置的緩存組件,能夠帶來更好的可伸縮性。
3.弱耦合;
容許服務器端和客戶端在很大範圍內,相對獨立地進化
四.Restful API 設計規範
1.協議
API與用戶通訊的協議,使用https協議。
2.域名
儘可能將API部署在專用域名之下(存在跨域的問題)
3.版本
應該將API的版本號放入URL
4.路徑
定位資源的url中要用名詞
5.Http請求方法(method)
get(從服務器取出資源,一項或多項)
post(在服務器新建資源)
put(在服務器更新資源(客戶端提供改變後的完整資源))
patch(在服務器更新資源(客戶端提供改變的屬性))
delete(從服務器端刪除資源)
兩個不經常使用:
head(獲取資源的元數據)
options(獲取信息,關於資源的哪些屬性是客戶端能夠改變的)
6.過濾信息
在URL上傳參的方式傳遞搜索條件
7.狀態碼
服務器向用戶返回狀態碼和提示信息
8.錯誤處理
狀態碼是4xx時,返回錯誤信息,error看成key
9.返回結果
針對不一樣的操做,服務端向用戶端返回的結果應符合如下規範:
GET /collection:返回資源對象的列表(數組) GET /collection/resource:返回單個資源對象 POST /collection:返回新生成的資源對象 PUT /collection/resource:返回完整的資源對象 PATCH /collection/resource:返回完整的資源對象 DELETE /collection/resource:返回一個空文檔
10.Hypermedia API
RESTful API最好作到Hypermedia,即返回結果中提供連接,連向其餘API方法,使得用戶不查文檔,也知道下一步應該作什麼。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}