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  }