🍁 作者:知識淺談,CSDN簽約講師,CSDN部落格專家,華為雲雲享專家,阿裡雲星級部落客
📌 擅長領域:全棧工程師、爬蟲、ACM算法
💒 公衆号:知識淺談
🤞RESTful API接口設計總結🤞
- RESTfu是一種網絡應用程式的設計風格和開發方式,基于HTTP,可以使用XML格式定義或JSON格式定義。
- RESTful适用于移動網際網路廠商作為業務接口的場景,實作第三方OTT調用移動網絡資源的功能,動作類型為新增、變更、删除所調用資源。
📍Restful接口使用
🍮基于HTTP協定URL對外暴露
- 标準格式
- http(s): //域名:端口[/版本]/資源1[/子資源2/..../子資源n]\[/路徑變量]
- 多版本控制
- GET http(s): //域名:端口/v1.1/blog/article/10
- 資料查詢采用複數
- GET http(s): //域名:端口/v1.1/blog/articles?categoryId=10
- 反面典型
- GET http(s): //域名:端口/v1.1/blog/articles?categoryId=10
🍮使用XML或JSON格式定義
要使用這種類型的傳回資料。
GET http(s)://edu.lagou.com/employee/10
{
"code":"0",
"message":"success",
"data":{
"name":"張三",
"age":36
}
}
不要使用帶标簽的如\
name:"小王"\
這種帶有标簽的。
🍮不同的行為使用不同的請求方式

📍Restful接口設計規則
🍮接口保證幂等性
幂等性:當多次重複請求時,接口能夠保證與預期相符的結果
例如:我們設計了一個為員工漲薪的接口,本次請求發送後為1号員工漲薪500元。
幂等性的設計方法:
- 前端傳遞token,存儲在redis使用token的唯一性。
- Redis的Setnx方法,防止幂等性問題。
- 使用版本号{樂觀鎖}解決幂等性問題
- 使用主鍵的唯一性限制
🍮标準化響應的結果集
- 在标準化的響應結構中要包含code、message兩項,分别對應了伺服器處理結果與傳回的消息内容,除此以外data屬性是可選項,包含從響應傳回的額外資料,如查詢結果、新增或更新後的資料。
- 在語義層面,也要遵循相同的規則例如當伺服器處理成功,code固定等于0,如果遇到異常情況,公司内部也要遵循統一的code命名标準例如:code以1XX開頭代表參數異常,2XX開頭代表資料庫處理異常。當然不同的公司有不同的命名規則,一定要提前定義好并嚴格要求開發團隊嚴格按語義使用編碼。
🍮接口無狀态設計
這個指的是不要在單個伺服器節點上存儲使用者的狀态資訊,分布式系統中可能會出現狀态不同步,是以要接口無狀态。
錯誤例子:隻有單個服務節點儲存了會話狀态,是不好的。
解決方案:
📐第 1 種: 用戶端存儲認證資料