github.com/gogf/gf@v1.16.9/.example/net/ghttp/server/request/validation/validation2/validation2.go (about) 1 package main 2 3 import ( 4 "github.com/gogf/gf/frame/g" 5 "github.com/gogf/gf/net/ghttp" 6 "github.com/gogf/gf/util/gvalid" 7 ) 8 9 type RegisterReq struct { 10 Name string `p:"username" v:"required|length:6,30#请输入账号|账号长度为:min到:max位"` 11 Pass string `p:"password1" v:"required|length:6,30#请输入密码|密码长度不够"` 12 Pass2 string `p:"password2" v:"required|length:6,30|same:password1#请确认密码|两次密码不一致"` 13 } 14 15 type RegisterRes struct { 16 Code int `json:"code"` 17 Error string `json:"error"` 18 Data interface{} `json:"data"` 19 } 20 21 func main() { 22 s := g.Server() 23 s.BindHandler("/register", func(r *ghttp.Request) { 24 var req *RegisterReq 25 if err := r.Parse(&req); err != nil { 26 // Validation error. 27 if v, ok := err.(gvalid.Error); ok { 28 r.Response.WriteJsonExit(RegisterRes{ 29 Code: 1, 30 Error: v.FirstString(), 31 }) 32 } 33 // Other error. 34 r.Response.WriteJsonExit(RegisterRes{ 35 Code: 1, 36 Error: err.Error(), 37 }) 38 } 39 // ... 40 r.Response.WriteJsonExit(RegisterRes{ 41 Data: req, 42 }) 43 }) 44 s.SetPort(8199) 45 s.Run() 46 }