在Go Gin 中自訂結構標記驗證的錯誤訊息
Gin 是一個流行的Go Web 框架,使用go-playground/ validator/ v10 用於結構驗證。當驗證失敗時,它通常會傳回詳細的錯誤訊息。本文探討如何自訂這些訊息以提供更人性化的體驗。
理解錯誤類型
Gin 的驗證回傳的錯誤是驗證器。 ValidationErrors 。此錯誤類型包含 validator.FieldErrors 的集合,每個都代表無效欄位及其驗證標記。
自訂錯誤訊息
要自訂錯誤訊息,我們可以使用 error.As 函數將 validator.ValidationErrors 轉換為錯誤。轉換後,我們可以存取各個 validator.FieldErrors 並根據所使用的驗證標籤建構自訂錯誤訊息。
建立自訂錯誤模型
首先,我們定義自訂錯誤模型,例如:
type ApiError struct { Field string Msg string }
自訂驗證錯誤訊息標籤
接下來,我們定義一個輔助函數來將驗證標籤對應到自訂錯誤訊息:
func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
綁定和處理驗證錯誤
在我們的處理函數中,我們可以將請求綁定到我們的結構並檢查驗證錯誤:
var u User err := c.BindQuery(&u) if err != nil { var ve validator.ValidationErrors if errors.As(err, &ve) { out := make([]ApiError, len(ve)) for i, fe := range ve { out[i] = ApiError{fe.Field(), msgForTag(fe.Tag())} } c.JSON(http.StatusBadRequest, gin.H{"errors": out}) } return }
範例輸出
使用此自定義錯誤處理,我們可以傳回以下格式的JSON 回應:
{ "errors": [ { "Field": "Number", "Msg": "This field is required" } ] }
這為用戶提供了更用戶友好且資訊豐富的錯誤回應。
以上是如何自訂 Go Gin 結構標籤驗證的錯誤訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!