[英]How to test for validation error from go-playground/validator?
[英]How to compose snake case binding tag with go-playground/validator?
作為標題,由於我是 golang 的新手,我對某些自定義格式的綁定標簽有點困惑。
例如,有一個結構體包含一些這樣的字段
type user struct {
name `json:"name" binding:"required"`
hobby `json:"name" binding:"required"`
}
並且 name 字段應該只支持小寫和下划線(例如 john_cage,david),但是在我閱讀了 validator 的文檔之后,仍然對此一無所知。 validator github對我的情況有什么好的建議或解決方案嗎? 提前致謝。
閱讀文檔,谷歌類似問題,嘗試編寫客戶綁定標簽等。
binding
標簽來自gin
, validator
的正確結構標簽是validate
。 由於沒有 snake_case 的驗證,您應該自己制作。 並且不要忘記導出字段( Hobby
, Name
)。 如果不是,(例如: hobby
、 name
)驗證器將忽略這些字段。
package main
import (
"fmt"
"strings"
"github.com/go-playground/validator/v10"
)
type user struct {
Hobby string `json:"name" validate:"required,snakecase"`
}
func main() {
v := validator.New()
_ = v.RegisterValidation("snakecase", validateSnakeCase)
correct := user{"playing_game"}
Incorrect := user{"playingGame"}
err := v.Struct(correct)
fmt.Println(err) // nil
err = v.Struct(Incorrect)
fmt.Println(err) // error
}
const allows = "abcdefghijklmnopqrstuvwxyz_"
func validateSnakeCase(fl validator.FieldLevel) bool {
str := fl.Field().String()
for i := range str {
if !strings.Contains(allows, str[i:i+1]) {
return false
}
}
return true
}
如果你想通過gin
注冊 function ,檢查這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.