type TestOrderPageReq struct {
OpenId string `json:"open_id" binding:"required" msg:"open_id不能为空"`
Page int64 `json:"page" binding:"required" msg:"page不能为空"`
Size int64 `json:"size" binding:"required" msg:"size不能为空"`
func GetError(errs validator.ValidationErrors, r interface{}) string {
s := reflect.TypeOf(r)
for _, fieldError := range errs {
filed, _ := s.FieldByName(fieldError.Field())
errTag := fieldError.Tag() + "_msg"
errTagText := filed.Tag.Get(errTag)
errText := filed.Tag.Get("msg")
if errTagText != "" {
return errTagText
if errText != "" {
return errText
return fieldError.Field() + ":" + fieldError.Tag()
return ""
c.JSON(http.StatusOK, gin.H{
"code": 40010,
"msg": GetError(err.(validator.ValidationErrors), jsonReq),
// TestOrderPageReq 测试订单数据结构体定义 test2路由type TestOrderPageReq struct { OpenId string `json:"open_id" binding:"required" msg:"open_id不能为空"` Page int64 `json:"page" binding:"required" msg:"page不能为空"` Size int64 `json:"size" binding:"required" msg:"s
Go 使用validator进行后端数据校验一、概述二、操作符说明三、常用标记说明四、标记使用注意五、使用示例
包下载:go get github.com/go-playground/validator/v10
在接口开发经常会遇到一个问题是后端需要写大量的繁琐代码进行数据校验,所以就想着有没有像前端校验一样写规则进行匹配校验,然后就发现了validator包,一个比较强大的校验工具包下面是一些学习总结,详细内容可以查看[validator](https://github.com/go-play
首先定义一个接受数据用的DTO结构体,叫做LoginDTO
type LoginDto struct {
Username string `json:"username" binding:"required" msg:"用户名不能为空"`
Password string `json:"password"
window 上安装gin,需要先安装git ,go 环境,然后打开git,在你想要的地方安装go就可以
比如在 /e/golang/gin 安装gin 在git命令行中输入mkdir -p $GOPATH/gin1
然后没有报错的话就说明创建成功了,然后进入该文件下:cd $_ ,
由于这个go modules和GOPATH可能是天生不和,如果配置了GOPATH的话,这个go modules是默认不开启的。开启也很简单,只要在命令行中键入下面命令就行了。
export GO111MODULE=on
# 开启GoModule特性
不过这种是一次性的,重启之后就会消失,所以可以在环境信息
在命令行中输入这句话运行等待就好。
问题来了,因为墙的问题,go get会很慢,所以命令行里面半天什么反应也没有,不要急,慢慢等着就会看到gin-gonic/gin这个目录出现
这个时候命令行还是没有结束,表示还在下一些东西。有的时候可能心急的人就停了(比如我),然后写个简单的例子测试一下安装是否成功
package main
import (
github.com/gin-gonic/gi
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`password` varchar(50) NOT NULL DEFAULT '',
`nickname` varchar(50) NOT NULL DEFAULT '',
`created_at` timestamp NOT NULL DEFAULT CURRENT
一、使用 github.com/go-playground/validator/v10 进行参数校验
安装 validator:go get "github.com/go-playground/validator/v10"
二、实现代码如下:
var (
validate = validator.New()
_ = validate.RegisterValidation("companyIdValidation", C
Golang的参数校验,大多数使用的是validator(gin框架使用的是validator v8/v9)。但是,validator的缺点是,将校验的逻辑,以标签(tag)的方式写入结构体,这种方法具有很强的侵入性,并且校验逻辑不容易阅读。
为此,笔者写了checker,作为validator的替代品。checker可以替代validator, 用于结构体或非结构体的参数校验。
使用例子: tag 与 Rule的比较
validator使用的tag,与checker的Rule的对应关系可以参考RE
1. 在Goland中创建一个新的Go项目。
2. 在终端中使用以下命令安装gin框架:go get -u github.com/gin-gonic/gin
3. 在您的Go代码中导入gin包:import "github.com/gin-gonic/gin"
4. 创建一个gin引擎实例:r := gin.Default()
5. 添加路由处理程序:r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") })
6. 启动服务器:r.Run()
这样,您就可以使用gin框架来构建您的Web应用程序了。