当前位置: 首页 > news >正文

go gin 自定义验证

我们上一篇已经提到了gin中binding时候可以指定json字段大小等限制,但是那个错误却是英文的,现在想搞成中文的,以便前端可读,demo如下

package mainimport ("net/http""reflect""github.com/gin-gonic/gin""github.com/go-playground/validator/v10"
)// binding 指明了json字段的限制,msg是自定义的错误提醒
type UserInfo struct {UserName  string `json:"username" binding:"required,min=4,max=6" msg:"username验证失败"`Age       int    `json:"age" binding:"gt=18,lte=120" msg:"age验证失败"`Password  string `json:"password" binding:"required" msg:"密码校验失败"`Password2 string `json:"password2" binding:"required,eqfield=Password" msg:"必填,切要与password一致"`
}//any是泛型func CoustomError(err error, obj any) map[string]string {var errors map[string]string = make(map[string]string)if err2, ok := err.(validator.ValidationErrors); ok {// 反射getObj := reflect.TypeOf(obj)// 循环错误的验证for _, v := range err2 {if sf, exist := getObj.Elem().FieldByName(v.Field()); exist {// 获取结构体中的msg属性errors[v.Field()] = sf.Tag.Get("msg")}}return errors}return nil
}func validationcustomerror(c *gin.Context) {var user UserInfoerr := c.ShouldBindJSON(&user)if err != nil {errors := CoustomError(err, &user)c.JSON(http.StatusBadRequest, gin.H{"msg": errors})} else {c.JSON(http.StatusOK, gin.H{"msg": user})return}
}func main() {router := gin.Default()router.POST("/validationcustomerror", validationcustomerror)router.Run("localhost:8888")
}

在这里插入图片描述

http://www.lryc.cn/news/144382.html

相关文章:

  • 掉了无数头发成地中海后,我整理出了这套40+的大屏模板,快收藏!
  • 【从零开始学习JAVA | 第四十六篇】处理请求参数
  • k8s的交付与部署案例操作
  • LVS集群 (四十四)
  • stm32之DS18B20
  • Redis的数据结构与单线程架构
  • c# modbus CRC计算器(查表法)
  • 2023.08.27 学习周报
  • css元素定位:通过元素的标签或者元素的id、class属性定位,还不明白的伙计,看这个就行了!
  • 基于Spring实现博客项目
  • 数据库第十七课-------ETL任务调度系统的安装和使用
  • Qt 动态中英文切换
  • hdfs操作
  • h5分享页适配手机电脑
  • 崭新商业理念:循环购模式的价值引领-微三云门门
  • 二级MySQL(二)——编程语言,函数
  • python爬虫12:实战4
  • 系列十三、idea创建文件自动生成作者信息
  • spring websocket demo
  • C语言的发展及特点
  • Flink Kubernates Native - 入门
  • Ceph入门到精通-大流量10GB/s支持OSPF(ECMP)-LVS 集群
  • IDEA、git如何修改历史提交commit的邮箱
  • 字符设备驱动(内核态用户态内存交互)
  • Qt基础 线程池
  • Django(8)-静态资源引用CSS和图片
  • C++ list模拟实现
  • 中国建筑出版传媒许少辉博士八一新书乡村振兴战略下传统村落文化旅游设计日京东当当畅销榜自由营九三学
  • C语言(第三十二天)
  • arcgis+postgresql+postgis使用介绍