首页 > 其他分享 >go validator验证结构体零值问题

go validator验证结构体零值问题

时间:2023-08-08 18:44:25浏览次数:39  
标签:err 验证 binding 体零值 validator go gin omitempty email

  • 在使用gin框架验证前端参数时,由于golang特性,对于结构体没赋值的字段会赋予零值(int默认0,string默认""等)
  • 所以当想要验证的字段时非必填字段时,不设置required,其他的验证条件依然不能通过
  • 解决方法是在非必填字段上添加omitempty
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type Register struct {
	Email string `json:"email,omitempty" binding:"omitempty,email"`
}
/*
type Register struct {
	Email string `json:"email,omitempty" binding:"email"`
}
*/
func main() {
	r := gin.Default()

	r.POST("ping", func(c *gin.Context) {
		register := &Register{}
		err := c.BindJSON(register)
		if err != nil {
			c.JSON(http.StatusOK, gin.H{
				"msg": err.Error(),
			})
			return
		}
	})
	r.Run(":8080")
}

以上,binding中无omitempty时,请求json参数中没有email字段会报错

参考链接:https://segmentfault.com/q/1010000018561478

标签:err,验证,binding,体零值,validator,go,gin,omitempty,email
From: https://www.cnblogs.com/gxnwang/p/17615147.html

相关文章

  • Typora+GitHub+PicGo设置
    Typora+GitHub+PicGo创建GitHub图像存储仓库新建仓库输入仓库名称image-repo选择public公开属性用户设置settings找到developersettings创建token选择classic输入名称,token过期时间,和repo,点击创建token复制保存token,后面要用PicGo设置仓库名......
  • mongodb副本集模式的单机部署+修改ip
    环境:OS:Centos7mongodb:4.4.22 1.解压[root@localhostsoft]#tar-xvfmongodb-linux-x86_64-rhel70-4.4.22.tgz[root@localhostsoft]#mvmongodb-linux-x86_64-rhel70-4.4.22/usr/local/services/mongodb 2.创建目录mkdir-p/home/middle/mongodb/data/mkdir-p/ho......
  • Django 的数据库操作
    Djangp提供了一套抽象的API,能够对数据库进行CRUD(create,retrieve,update,deleteobjects)1、使用shell操作安装ipython交互环境pipinstall-ihttps://pypi.douban.com/simpleipythonpyhtonmanage.pyshell-iipython查看所有项目:Projects.objects.......
  • 如何使用goconvey对gin+gorm+mysql搭建的后台进行集成测试
    集成测试对于项目的质量和稳定性非常重要。那么如何实现一个基于真实数据库的测试流程呢?首先,我们需要创建一个专门用于测试的数据库。比如,我自己使用的是以"test_"开头的数据库名。//创建测试数据库funcSetupForTest()(errerror){ db,err=gorm.Open(setting.DatabaseSe......
  • Django 模型的简单应用
    每一个应用下的数据库模型类,需要在当前应用下的model.py这个文件中定义数据库模型定义规则如下:一个数据库模型类需要继承Model或者Model的子类默认会创建一个自动递增的id主键默认创建的数据库名为,应用名小写_数据库模型类小写一个数据库模型类相当于......
  • 全栈测试平台推荐:RunnerGo
    做软件测试的同学在工作时应该都碰到过这种情况:接口管理、接口测试用postman、Apipost等接口管理工具,性能测试用jmeter、loadrunner等性能测试工具,接口自动化则是jmeter脚本或者python脚本配合jenkins使用。这种情况极大的降低了研发效率,今天给大家推荐一款入选GiteeGVP的开源测......
  • I'm not good at English. 我不太擅长英语。 I'm not very fluent in English yet.
    “我英语不好”:并不是MyEnglishispoor.可以说:I'mnotgoodatEnglish.我不太擅长英语。I'mnotveryfluentinEnglishyet.我的英语还不太流利。p.s.外国人的眼中,用poor来形容自己的水平,是一种自卑不自信的表现。如果真的英语不太好,或者想要谦虚一下,可以使用后两句......
  • Django博客开发教程:体验数据查询
    进行数据查询之前,我们需要先进入我们的管理后台,在里面添加一些数据。然后我们用Pycharm打开我们的数据库。具体操作方法:用Pycharm可视化操作数据库我们的数据结构长这般模样:双击blog_article,可以查看到文章表里的内容和里面的字段:数据查询,就是在视图函数里(views.py文件里)对......
  • Django博客开发教程:体验django模板
    上面我们有说过,用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,我们重点更多是放在HTML内容的网页。我们把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的......
  • Django博客开发教程:体验django模板,
    上面我们有说过,用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,我们重点更多是放在HTML内容的网页。我们把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的......