2、RESTFUL設計規範

    前端設備的多樣性促進API架構的流行,甚至出現“API優先”的設計思想。而RESTFUL API 是目前比較成熟的一套互聯網應用程序的API設計理論,如何設計一套合理好用的API,就是本篇文章的重點,廢話少說,開始正題。

1、協議

上篇已說到“RESTFUL是基於HTTP的設計風格和開發方式”

結論API與用戶的通信協議,總是使用HTTP/HTTPS

 

2、域名:對外開放訪問的必須條件

優先將API放在專用域名下

API簡單且不會再進一步擴展時,可考慮放主域名下

 

3、版本:應該將API的版本放入URL中

相較於將版本信息放到HTTP頭信息中,體現在URL中更直觀

 

4、通過媒體類型指定版本信息

Accept:application/json

 

5、路徑:路徑又稱“終點”,表示API的具體地址(限名詞)

 

注意事項:

(1)URL的命名必須全部小寫

(2)URL中的資源的命名必須是名詞且爲複數形式

(3)URL中不能出現-,必須用_替代

(4)URL必須是易讀的

(5)URL一定不可暴露服務器架構(如何理解)

 

6HTTP動詞:表示資源的具體操作類型

常用動詞如下(括號裏對應的是SQL命令)

GET(SELECT)

從服務器中取出資源(一項或多項)

POST(CREATE)

在服務器新建一個資源

PUT(UPDATE)

在服務器更新資源(客戶端提供改編後的完整資源--整行數據)

PATCH(UPDATE)

在服務器更新資源(客戶端提供改變的屬性-部分字段)

DELETE(DELETE)

從服務中刪除資源

HEAD

獲取資源的元素據

OPTIONS

獲取信息,關於資源的哪些屬性是客戶端可以更改的

 

示例如下:

GET  /tigers

列出所有的老虎

POST /tigers

增加一隻老虎

PUT /tigers/name

更新某隻特定老虎的信息(提供某隻老虎的所有信息)

PATCH  tigers/name

更新某隻老虎的信息(提供某隻老虎的部分信息)

DELETE  tigers/name

刪除某隻特定的老虎

 

 

7、過濾信息:如果記錄數過多,服務器不可能返回所有的數據給用戶,可通過參數過濾返回結果

常見參數如下

?limit=10

指定返回記錄的數量

?offset=10

指定返回記錄的開始位置

?page=2&per_page=10

指定頁數及每頁記錄數

?sortby=name&order=asc

指定返回結果排序規則

?name=tidd

指定篩選條件

 

參數的設計允許存在冗餘,即允許API路徑和URL參數偶爾有重複,

如GET /tigers/tidd 與  GET /tigers?name=tidd

 

8、狀態碼

 

狀態碼

描述

1xx

代表請求已被接受,需要繼續處理

2xx

請求已成功,請求所希望的響應頭或數據體將隨此響應返回

3xx

重定向

4xx

客戶端原因引起的錯誤

5xx

服務端原因引起的錯誤

 

更多狀態碼信息見“RESTFUL中HTTP狀態碼歸納

 

9、認證:先獲取Access_Token,再通過Token調用身份認證的API

獲取token時必須在響應中包含失效時間的參數

{

"access_token":"xxxxxxx",

"token_type":"login",

"expires_in":60

}

 

客戶端在請求需要認證的API時,必須在請求頭Authorization中帶上access_token

Authorization:login xxxxx

 

超過指定時間後,access_token過期,服務端應返回相關提示

 

10、返回結果

常見返回方式

(1)將錯誤放到HTTP響應頭

(2)將錯誤放到HTTP響應實體中

 

注意事項:

(1)API一定不可返回1xx類型狀態碼

(2)必須返回出錯的響應信息

 

參考資料:

              http://www.ruanyifeng.com/blog/2014/05/restful_api.html

              https://www.cnblogs.com/softidea/p/9712565.html

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