RESTFul 風格的API

一、什麼是RESTFul

RESTful是基於http方法的API設計風格而不是一種技術。可以說使用這種設計風格我們看到url就知道要什麼樣的資源、看到http method就知道要針對資源幹什麼、看到http的 status code就知道結果是什麼。使用RESTFul風格的api規範了程序員的代碼開發,爲前後端的交互減少了接口交流的口舌成本。

二、RESTFul風格的具體體現

2.1 REST 面向資源的(名詞)

REST通過URI暴露資源的時候,會強調不要再 URI 中出現的動詞,比如:

不符合REST的接口的URI 符合REST接口的URI 功能
GET /api/getDog GET /api/dogs/{id} 獲取一個小狗狗對象
GET /api/getDogs GET /api/dogs 獲取所有小狗狗對象
GET /api/addDog POST /api/dogs 添加一個小狗狗對象
GET /api/editDog/{id} PUT /api/dogs/{id} 修改一個小狗狗對象
GET /api/deleteDog/{id} DELETE /api/dogs/{id} 刪除一個小狗狗對象

從上面的表格中我們可以看出,RESTFul風格的接口通過 URI 來暴露資源的時候裏面是沒有動詞的

2.2. 那麼問題來了,那麼怎樣體現對資源的操作呢
2.2.1 用HTTP方法體現對資源的操作
方法 功能
GET 獲取資源
POST 添加資源
PUT 修改資源
DELETE 刪除資源
2.3 HTTP狀態碼

通過 HTTP 狀態碼來體現狀態的結果,結果無非是兩種情況,成功、客戶端錯誤、服務器端錯誤

狀態碼 顯示的消息 表示的意義
200 OK 所有事情按照預期正確執行完畢 - 成功
400 Bad Request API發生了一些錯誤 - 客戶端錯誤
500 Internal Server Error API 發生了一些錯誤 - 服務器端錯誤
2.4 相關注意事項
  1. Get方法和查詢參數不應該改變數據,改變數據的事情交給POST、PUT、DELETE
  2. 使用複數名詞,而不要使用單數名詞
  3. 複雜資源關係的表達

GET /cars/711/drivers/ 返回使用 car 711的所有司機

GET /cars/711/drivers/4 返回使用car 711的4號司機

2.6高級用法::HATEOAS

HATEOAS 的全稱爲 Hypermedia as the Engine of Application State(超媒體作爲應用狀態的引擎),什麼意思呢,就是返回結果中提供鏈接,連向其它API方法,使得用戶不查文檔也知道下一步應該做什麼。

例子如下:

{
    "link":{
        "rel":"collection https://www.example.com/zoos",
        "href":"https://api.example.com/zoos",
        "title":"List of zoos",
        "type":"application/vnd.yourformat+json"
    }
}

這裏表示,文檔中有一個link屬性,用戶讀取這個屬性就知道下一步該調用什麼API了。

2.8爲集合提供過濾、排序、選擇和分頁等功能

Filtering過濾:

使用唯一的查詢參數進行過濾:

GET /car?color=red 返回紅色的cars

GET /car?seats<=2 返回小於兩座位的cars集合

Sorting排序:

允許對多個字段進行排序

GET /cars?sort=-manufactor,+model

這個意思是返回根據生產者降序和模型升序排列的car集合,減號表示倒序,加號表示升序

Filed selection

移動端能夠顯示其中的一些字段,它們其實不需要一個資源的所有字段,給API消費者選擇一個字段的能力,這樣會降低網絡流量,提高API的可用性。

GET /cars?fileds=manufactor,model,id,color

Paging分頁

使用 limit 和 offfset ,實現分頁,缺省limit=20 和offset =0:

/cars?offset=10&limit=5

2.9版本化你的API

使得API版本變得強制性,不要發佈無版本的API。

/api/v1/blog 面向擴展開放,面向修改關閉,在這裏v1就是指的版本

注:上述筆記來自於筆者平時看視頻整理所得,如有侵權還請聯繫刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章