首頁 >後端開發 >Golang >如何自訂 Gin 結構標籤驗證的錯誤訊息?

如何自訂 Gin 結構標籤驗證的錯誤訊息?

Susan Sarandon
Susan Sarandon原創
2024-12-15 05:42:10517瀏覽

How to Customize Error Messages from Gin's Struct Tag Validation?

自訂結構標籤驗證的錯誤訊息

在 Gin 中,結構標籤驗證用於在資料庫插入之前確保資料完整性。傳回的預設錯誤對於使用者來說是冗長且無意義的。本文介紹如何自訂錯誤訊息以提供更有意義的回應。

Gin 使用 go-playground/validator/v10 套件進行驗證。錯誤以 validator.ValidationErrors 傳回。若要自訂訊息,請使用標準錯誤包解包錯誤並存取 validator.FieldError 欄位。

建立錯誤模型(例如 ApiError)來定義自訂錯誤訊息的結構。例如:

type ApiError struct {
    Field string
    Msg   string
}

在處理程序中,如下處理錯誤:

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
}

最後,定義一個輔助函數以將驗證標籤對應到自訂訊息:

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}

使用此方法,將使用欄位名稱和基於驗證標籤的客製化訊息來自訂錯誤訊息。

以上是如何自訂 Gin 結構標籤驗證的錯誤訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn