《寶可夢朱紫》新精靈單打強度分析
阿新 • • 發佈:2022-12-06
Restful規範
REST全稱是Representational State Transfer,中文意思是表述(編者注:通常譯為表徵性狀態轉移)。它首次出現在2000年Roy Fielding的博士論文中
RESTFUL是一種定義Web API介面的設計風格,尤其適合前後端分離的應用模式中。
這種風格的理念認為後端開發任務就是提供資料的,對外提供的是資料資源訪問的介面,所以在定義介面時,客戶端訪問的URL路徑就表示這種需要操作的資料資源
事實上,我們可以使用任何一種框架都可以實現符合RESTFUL規範的API介面
- 資料的安全保障
url連結一般都採用https協議進行傳輸,注:採用Https協議,可以提高資料 互動過程中的安全性
- 介面的特徵表現
-用api關鍵字標識介面url:
-[https://api.baidu.com](https://api.baidu.com/)
-https://www.baidu.com/api
注:看到api欄位,就代表該請求url連結是完成前後端資料互動的
- 多版本共存
-在url連結中標識資料版本
-https://api.baidu.com/v1
-https://api.baidu.com/v2
注:url連結中的v1,v2,就是不同資料版本的提現,(只有在一種資料資源有多版本情況下)
- 資料即資源
介面作為前後端互動的媒介其互動的資料又被叫做資源,推薦使用名詞或者名詞的複數形式,對於某些特殊介面,我們可以使用動詞(api/books api/login) - 介面一般都是前後端資料的互動,互動的資料稱之為資源 - https://api.baidu.com/users - https://api.baidu.com/books
- **資源操作由請求方式決定 ** (method)
資源的操作我們直接通過提交的請求方式來決定(get、post、put/patch、delete) - 操作資源一般都涉及到增刪改查,以下請求方式來標識增刪改查動作 https://api.baidu.com/books -get請求:獲取所有書 https://api.baidu.com/books/1 -get請求:獲取主鍵為1 的書 https://api.baidu.com/books -post請求: 新增一本書 https://api.baidu.com/books/1 -put請求:整體修改主鍵為1的書 https://api.baidu.com/books/1 -patch請求:區域性修改主鍵為1 的書 https://api.baidu.com/books/1 -delete請求:刪除主鍵為1 的書
- 過濾
我們可以再url上傳參的形式傳遞搜尋條件
https://api.example.com/v1/people?limit=10 :指定返回記錄的數量
https://api.example.com/v1/people?offset=10 :指定返回記錄的開始位置
https://api.example.com/v1/people?page=2&per_page=100 :指定第幾頁,以及每頁的記錄數
https://api.example.com/v1/people?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序
https://api.example.com/v1/people?animal_type_id=1 :指定篩選條件
- 響應狀態碼
# 正常響應
200(正常請求)、
201(建立成功)、
# 重定向響應
301(永久重定向)、
302(臨時重定向)、
# 客戶端異常
403(請求無許可權)、
404(請求路徑不存在)、
405(請求方法不存在)、
# 服務端異常
500(伺服器異常)、
- 錯誤處理
應當返回錯誤資訊 error當作key
{
error:'無許可權操作'
}
- 返回結果
根據不同的請求以及請求得到的資料, 服務端返回不同的結果
GET /collection:返回資源物件的列表(陣列)
GET /collection/resource:返回單個資源物件
POST /collection:返回新生成的資源物件
PUT /collection/resource:返回完整的資源物件
PATCH /collection/resource:返回完成的資源物件
DELETE /collection/resource:返回一個空文件
- 需要url請求的資源需要訪問資源的請求連結
# Hypermedia API ,RESTFUL API最好做到Hypermedia,即返回結果中提供連結,連向其他API方法,使得使用者不查文件,也知道下一步應該做什麼
{
"status":0,
"msg":"OK",
"results":[
{
"name":"肯德基",
"img":"https://image.baidu.com/ftc/001.png"
}
........
]
}