Go进行参数校验 实践 | 青训营

138 阅读1分钟

前言

之前两篇简单的记录了一下如何使用Go去操作数据库和redis,但是咱我们日常接口开发的时候,需要对参数进行校验,自我感觉Go还是很优雅的

正文

一、导入依赖

 go get -u github.com/go-playground/validator/v10

二、创建一个通用的校验接口

image.png

这里是用来定义一个方法,用来获取错误信息,然后我们需要实现这个接口,进行判断等操作

三、定义一个校验规则

type UserInfoRequest struct {
    UserId int64  `form:"user_id" json:"user_id" binding:"required"`
    Token  string `form:"token" json:"token" binding:"required"`
}

上面的是一个例子,定义的是获取用户信息的请求信息

主要看标签这里

form:表示的是这个和表单中的那个字段进行绑定

json:表示这个字段中json的属性名

binding:这里则是需要绑定的规则

四、编写错误信息

func (register UserInfoRequest) GetMessages() ValidatorMessages {
    return ValidatorMessages{
       "user_id.required": "用户id不能为空",
       "token.required":   "token不能为空",
    }
}

这里就是定义了一个message对象,在里面编写相应的规则,个人感觉和前端的校验规则有点类似,还是很优雅的

五、接收参数

在接口这里,我们就可以使用gin.Context里面的bind接收各种各样的参数

比如这里

    c.ShouldBindQuery()

在这里判断是不是有错误,如果有错误,那么将错误返回

request.GetErrorMsg(form, err)

这样就完成了一个参数的校验,个人感觉还是很优雅的,返回的信息可以自己定义,也可以自己抽出公共的结构体进行返回

结语

总体来说,现在是可以写一些接口和小项目了,但是实际上还有很长的路要走,继续加油吧!