## RESTful風格Api
1.RESTful api接口規范:
?????(1)協議
????????? ? ?API與用戶的通信協議,總是使用HTTPs協議,確保交互數據的傳輸安全。
? ? ?(2)域名應該盡量將API部署在專用域名之下。
?????????????https://api.example.com
????????? ? ?如果確定API很簡單,不會有進一步擴展,可以考慮放在主域名下。
????????? ? ?https://example.org/api/
?????(3)api版本控制
????????? ? ?應該將API的版本號放入URL。
????????? ? ?https://api.example.com/v{n}/
????????????另一種做法是,將版本號放在HTTP頭信息中,但不如放入URL方便和直觀。Github采用這種做法。
????????????采用多版本并存,增量發布的方式。
????????????v{n} n代表版本號,分為整形和浮點型;
????????????整形的版本號: 大功能版本發布形式;具有當前版本狀態下的所有API接口 ,例如:v1,v2;
????????????浮點型:為小版本號,只具備補充api的功能,其他api都默認調用對應大版本號的api 例如:v1.1 v2.2
?????(4)API 路徑規則
??????????????路徑又稱"終點"(endpoint),表示API的具體網址。在RESTful架構中,每個網址代表一種資源(resource),所以
????????????? 網址中不能有動詞,只能有名詞,而且所用的名詞往往與數據庫的表格名對應。一般來說,數據庫中的表都是同種記
????????????? 錄的"集合"(collection),所以API中的名詞也應該使用復數。
??????????????舉例來說,有一個API提供動物園(zoo)的信息,還包括各種動物和雇員的信息,則它的路徑應該設計成下面這樣。
??????????????https://api.example.com/v1/products
??????????????https://api.example.com/v1/users
????????????? https://api.example.com/v1/employees
?????(5)HTTP請求方式
????????? ? ? 對于資源的具體操作類型,由HTTP動詞表示。
??????????????常用的HTTP動詞有下面四個(括號里是對應的SQL命令)。
????????? ? ?GET(SELECT):從服務器取出資源(一項或多項)。
????????? ? ?POST(CREATE):在服務器新建一個資源。
????????? ? ?PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。
????????? ? ?DELETE(DELETE):從服務器刪除資源。
????????????下面是一些例子。
?????????????GET /product/ID/purchase :列出某個指定商品的所有投資者
????????? ? ?GET?/product/ID/purchase/ID:獲取某個指定商品的指定投資者信息
????????? ? ?GET /product:列出所有商品
????????? ? ?GET /product/ID:獲取某個指定商品的信息
????????? ? ?POST /product:新建一個商品
????????? ? ?PUT /product/ID:更新某個指定商品的信息
????????? ? ?DELETE /product/ID:刪除某個商品
? ? (6)過濾信息
?????????????如果記錄數量很多,服務器不可能都將它們返回給用戶。API應該提供參數,過濾返回結果。
????????? ? ?下面是一些常見的參數。
??????????????limit=10:指定返回記錄的數量
??????????????offset=10:指定返回記錄的開始位置。
??????????????page=2&per_page=100:指定第幾頁,以及每頁的記錄數。
????????? ? ??sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。
????????? ? ??producy_type=1:指定篩選條
???(7)API 傳入參數
????????????參入參數分為4種類型:
????????? ? (a)地址欄參數
????????? ??????? ? ?restful 地址欄參數 /api/v1/product/122 122為產品編號,獲取產品為122的信息
????????????????? ? ?get方式的查詢字串 見過濾信息小節
????????? ?(b)請求body數據
????????????????????cookie
????????????????????request header
????????????????????cookie和header 一般都是用于OAuth認證的2種途徑
????????? ?(c)返回數據
????????????? ? ? ? 只要api接口成功接到請求,就不能返回200以外的HTTP狀態。
????????????????????為了保障前后端的數據交互的順暢,建議規范數據的返回,并采用固定的數據格式封裝。
????????????????? ? 接口返回模板:
————————————————
版權聲明:本文為CSDN博主「jialanshun」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jialanshun/article/details/80904261