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

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

Mary-Kate Olsen
發布: 2024-12-06 21:25:15
原創
431 人瀏覽過

How Can I Customize Error Messages from Go Gin's Struct Tag Validation?

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板