文章目錄:
- 前后端介面互動
- 介面回傳值約定
- 回傳值規范
- 正確回傳
- 錯誤回傳
- 統一定義錯誤碼
- 錯誤碼規范
- Controller 層如何用?
- 正確回傳
- 錯誤回傳
- 詳細代碼實作
- 錯誤碼
- Controller
- 總結
- 問題思考
前后端介面互動
我們都知道,前端通常會通過后臺提供的介面來獲取資料來完成前端頁面的渲染,前端可以為 PC 端、M 端、小程式、APP 等,
在這廢話就不多說了,這不是重點,
介面回傳值約定
回傳值規范
- 設定回傳的 HTTP 回應狀態碼;
- 發生錯誤時,需設定 Response Body 的錯誤碼和描述資訊;
正確回傳
HTTP 回應狀態碼,設定成 200,Response Body 結構為回傳的資料結構,
錯誤回傳
HTTP 回應狀態碼,不要設定成 200!需遵循 RFC 標準,
// Failure 錯誤時回傳結構
type Failure struct {
Code int `json:"code"` // 業務碼
Message string `json:"message"` // 描述資訊
}
統一定義錯誤碼
錯誤碼規范
- 統一在一個檔案中定義錯誤碼;
- 錯誤碼長度為 5 位;
第 1 位表示錯誤是哪種級別?例如:1 為系統級錯誤,2 為業務模塊錯誤,可標記 9 種錯誤級別,
第 2 位和第 3 位表示錯誤是哪個模塊?例如:01 為用戶模塊,02 為訂單模塊,可標記 99 個模塊,
第 4 位和第 5 為表示具體是什么錯誤?例如:01 為手機號不合法,02 為驗證碼輸入錯誤,可標記 99 個錯誤,
Controller 層如何用?
正確回傳
res := new(createResponse)
res.Id = 1
ctx.Payload(res)
錯誤回傳
c.AbortWithError(errno.NewError(
http.StatusBadRequest,
code.AdminCreateError,
code.Text(code.AdminCreateError)).WithErr(err),
)
return
詳細代碼實作
錯誤碼
- 錯誤碼封裝:https://github.com/xinliangnote/go-gin-api/blob/master/pkg/errno/errno.go
- 定義錯誤碼:https://github.com/xinliangnote/go-gin-api/blob/master/internal/api/code/code.go
Controller
- https://github.com/xinliangnote/go-gin-api/blob/master/internal/api/controller/admin_handler/func_create.go
總結
以上代碼供大家參考,還有優化的空間,歡迎大家使用并提出寶貴意見,
問題思考
- 1、提供對外介面時,如何進行安全的簽名驗證?
- 2、介面的冪等性如何設計?
- 3、如何統一對回傳資料進行敏感資料脫敏?
- 4、如何設計介面日志,便于介面聯調時快速進行錯誤定位?
- 5、關于介面檔案,如何進行自動生成?聽說過 swagger 還不知道如何使用?
如果你對以上問題又疑惑或拿捏不準,快來我的星球交流討論吧,https://t.zsxq.com/iIUVVnA,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285541.html
標籤:Go
