gin 条件验证请教下

2021-05-11 14:28:17 +08:00
 awanganddong
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 长度应该用什么

1445 次点击
所在节点    Go 编程语言
10 条回复
Kinnice
2021-05-11 14:37:42 +08:00
应使用正则
Vegetable
2021-05-11 15:00:51 +08:00
int 的长度不也能转化为值的区间吗
janxin
2021-05-11 15:01:01 +08:00
可是这个不是应该是个 string 吗...
linauror
2021-05-11 15:05:43 +08:00
一般手机号都是存字符串类型,没必要搞成 int
awanganddong
2021-05-11 15:06:31 +08:00
明白了
gollwang
2021-05-11 18:05:08 +08:00
不是应该 string max=11 吗?
awanganddong
2021-05-11 18:19:06 +08:00
如果是 int 类型的话,我该怎么判断最大和最小呢
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
2021-05-12 12:40:43 +08:00
>9999999999 && <=99999999999
awanganddong
2021-05-14 13:07:57 +08:00
souga

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/776228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX