V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
awanganddong
V2EX  ›  Go 编程语言

gin 条件验证请教下

  •  
  •   awanganddong · 2021-05-11 14:28:17 +08:00 · 1338 次点击
    这是一个创建于 1073 天前的主题,其中的信息可能已经有所发展或是发生改变。
    package main
    
    import (
    	"fmt"
    	"github.com/gin-gonic/gin"
    	"net/http"
    )
    
    type Response struct {
    	Code int         `json:"code"`
    	Msg  string      `json:"msg"`
    	Data interface{} `json:"data"`
    }
    type User struct {
    	Id    int    `json:"id"`
    	Phone string `json:"phone"`
    }
    type LoginParams struct {
    	Phone int64 `binding:"required,min=11,max=11" form:"phone" json:"phone"`
    }
    
    func ReturnResponse(c *gin.Context, code int, msg string, data interface{}) {
    	c.JSON( http.StatusOK, Response{
    		Code: code,
    		Msg:  msg,
    		Data: data,
    	})
    }
    func RegisterOrLogin(c *gin.Context) {
    	var loginParams LoginParams
    	var user User
    	err := c.ShouldBind(&loginParams)
    	if err != nil {
    		ReturnResponse(c, 40040, err.Error(), nil)
    		return
    	}
    	result := MysqlDb.Table("user").Find(&user)
    	fmt.Println(result)
    	ReturnResponse(c, 200, "success", result)
    }
    
    

    验证请求参数 phone 最开始设置 len=11,查看文档发现,在 int 情况下,直接验证这个数值。 换成 min,max 也是验证这个数值 如果我验证 int 长度应该用什么

    10 条回复    2021-05-14 13:07:57 +08:00
    Kinnice
        1
    Kinnice  
       2021-05-11 14:37:42 +08:00
    应使用正则
    Vegetable
        2
    Vegetable  
       2021-05-11 15:00:51 +08:00
    int 的长度不也能转化为值的区间吗
    janxin
        3
    janxin  
       2021-05-11 15:01:01 +08:00
    可是这个不是应该是个 string 吗...
    linauror
        4
    linauror  
       2021-05-11 15:05:43 +08:00
    一般手机号都是存字符串类型,没必要搞成 int
    awanganddong
        5
    awanganddong  
    OP
       2021-05-11 15:06:31 +08:00
    明白了
    gollwang
        6
    gollwang  
       2021-05-11 18:05:08 +08:00
    不是应该 string max=11 吗?
    awanganddong
        7
    awanganddong  
    OP
       2021-05-11 18:19:06 +08:00
    如果是 int 类型的话,我该怎么判断最大和最小呢
    buffzty
        8
    buffzty  
       2021-05-12 10:24:19 +08:00
    真实项目中 phone 是字符串 写个自定义验证规则
    var (
    phoneReg = regexp.MustCompile(`^1[3456789]\d{9}$`)
    )
    func validPhone(fl validator.FieldLevel) bool {
    val := fl.Field().String()
    return phoneReg.MatchString(val)
    }
    validate.RegisterValidation("phone",validPhone)
    mainjzb
        9
    mainjzb  
       2021-05-12 12:40:43 +08:00
    >9999999999 && <=99999999999
    awanganddong
        10
    awanganddong  
    OP
       2021-05-14 13:07:57 +08:00
    souga
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3269 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:54 · PVG 20:54 · LAX 05:54 · JFK 08:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.