3rdパーティ製のvalidator.v9を使って、Go言語でバリデーション処理を実装してみましょう。

KOUKI
バリデーションチェックというとフロントエンドよりのイメージがあるかもですが、サーバーサイドでもバリデーションチェックをしますよね!
<目次>
事前準備
次のモジュールをinstallしてください。
1 |
go get "gopkg.in/go-playground/validator.v9 |
実装
早速、実装してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
// main.go package main import ( "fmt" vCop "gopkg.in/go-playground/validator.v9" ) // validateでバリデーションを設定 type User struct { FirstName string `validate:"required,gte=4"` LastName string `validate:"required,gte=4"` Email string `validate:"required,contains=@"` Password string `validate:"required,gte=8"` } var validator *vCop.Validate func init() { // バリデーション初期化 validator = vCop.New() } func Validate(t interface{}) error { return validator.Struct(t) } func ShowResult(err error) { if err != nil { fmt.Println("Invalid User:", err) } else { fmt.Println("Valid User!") } } func main() { validUser := User{ FirstName: "KENJI", LastName: "MUKAI", Email: "kuroneko@yahoo.co.com", Password: "hogehoge", } err := Validate(validUser) ShowResult(err) invalidFirstNameUser := User{ FirstName: "K", LastName: "MUKAI", Email: "kuroneko@yahoo.co.com", Password: "hogehoge", } err = Validate(invalidFirstNameUser) ShowResult(err) invalidLastNameUser := User{ FirstName: "KENJI", LastName: "M", Email: "kuroneko@yahoo.co.com", Password: "hogehoge", } err = Validate(invalidLastNameUser) ShowResult(err) invalidEmailUser := User{ FirstName: "KENJI", LastName: "MUKAI", Email: "kuroneko_yahoo.co.com", Password: "hogehoge", } err = Validate(invalidEmailUser) ShowResult(err) invalidPasswordUser := User{ FirstName: "KENJI", LastName: "MUKAI", Email: "kuroneko@yahoo.co.com", Password: "p", } err = Validate(invalidPasswordUser) ShowResult(err) } |
User Structにvalidateを設定し、初期化したvalidatorでバリデーションチェックをしています。チェックタイプは色々あります。

KOUKI
たったこれだけです!
さっそく、実行してみましょう。
1 2 3 4 5 6 7 |
$ go run main.go Valid User! Invalid User: Key: 'User.FirstName' Error:Field validation for 'FirstName' failed on the 'gte' tag Invalid User: Key: 'User.LastName' Error:Field validation for 'LastName' failed on the 'gte' tag Invalid User: Key: 'User.Email' Error:Field validation for 'Email' failed on the 'contains' tag Invalid User: Key: 'User.Password' Error:Field validation for 'Password' failed on the 'gte' tag |
ブラウザから受け取った値のバリデーションチェカーとして、大活躍してくれそうなモジュールですね^^
それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。