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

深圳沙井做公司网站南宁百度seo

深圳沙井做公司网站,南宁百度seo,网站制作过程简介,电子商务网站建设规划教案前言 在我们开发模块的时候,有一个问题是我们必须要去考虑的,它就是如何进行入参校验,在gin框架的博客中我就介绍过一些常见的参数校验,大家可以参考gin框架学习笔记(四) ——参数绑定与参数验证,而这个其实也不是能够完全应对我…

前言

在我们开发模块的时候,有一个问题是我们必须要去考虑的,它就是如何进行入参校验,在gin框架的博客中我就介绍过一些常见的参数校验,大家可以参考gin框架学习笔记(四) ——参数绑定与参数验证,而这个其实也不是能够完全应对我们在日常开发中的需要,而今天我们要介绍的就是如何基于validator这个第三方库来实现对接口入参的校验,话不多说,开始发车!

validator包的下载

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

validator的使用

背景介绍

在讲解validator包的使用方式之前我们先来看一个应用场景:博主最近在写自己的博客网站,而博客网站中有一个问题,我们先来看一下表结构:

type User struct {gorm.ModelUsername string `gorm:"type:varchar(20)" json:"username"`Password string `gorm:"type:varchar(100)" json:"password"`Role     int    `gorm:"type:int;default:2" json:"role"`
}

在博客中我设置了两种角色管理员(role=1)普通用户(role=2),而这也造成了一个问题:我们在添加用户按照正常业务情况是不能直接在前台创建管理员,而这个就需要我们在后端进行参数校验了(备注:其实参数校验这件事前后端都是要做的,但是我们这里介绍主要是后端,就以后端视角来介绍了),而接下来我们以给这个用户模块做参数校验为例,来介绍一下我们如何来实现参数校验以及一些其他的相关操作。

为数据模型添加校验条件

type User struct {gorm.ModelUsername string `gorm:"type:varchar(20)" json:"username" validate:"required,min=4,max=12"`Password string `gorm:"type:varchar(100)" json:"password" validate:"required,min=6 max=20"`Role     int    `gorm:"type:int;default:2" json:"role" validate:"required,gte=2"`
}

如上我们利用validate字段指明了数据的验证规则

拓展bindingvalidate的区别:

"validate"通常用于描述数据的验证规则,用于确保输入的数据符合特定的格式、要求或约束。验证通常在
数据提交之前进行,以确保数据的完整性和准确性。而"binding"通常用于描述数据的绑定规则,用于将用户界面元素与数据模型进行关联。数据绑定确保用户输
入的数据与数据模型的字段正确地同步,使用户界面的更改能够反映在数据模型中,或反之亦然。因此,
"validate"主要关注数据的验证和校验,而"binding"主要关注数据在用户界面元素和数据模型之间的绑定
和同步。

编写数据校验模块

我先示范一下数据消炎模块的书写,然后我再给大家具体讲解一下代码,首先我们来看一下最终我们所定义的User数据模型:

type User struct {gorm.ModelUsername string `gorm:"type:varchar(20)" json:"username" validate:"required,min=4,max=12" label:"用户名"`Password string `gorm:"type:varchar(100)" json:"password" validate:"required,min=6,max=20" label:"密码"`Role     int    `gorm:"type:int;default:2" json:"role" validate:"required,gte=2" label:"角色码"`
}

这里主要添加了两个标签:

  • validate:用来记录我们做入参验证的时候所做的限制条件
  • label:作为标记来返回标签值作为字段的名称

我们再来看校验模块的源代码:

package validatorimport ("fmt""gin_vue_blog/utils/errmsg""github.com/go-playground/locales/zh_Hans_CN"ut "github.com/go-playground/universal-translator""github.com/go-playground/validator/v10""github.com/go-playground/validator/v10/translations/zh""reflect"
)func Validator(data any) (string, int) {validate := validator.New()uni := ut.New(zh_Hans_CN.New())trans, _ := uni.GetTranslator("zh_Hans_CN")err := zh.RegisterDefaultTranslations(validate, trans) // 注册翻译器if err != nil {fmt.Println("err:", err)}validate.RegisterTagNameFunc(func(field reflect.StructField) string {label := field.Tag.Get("label") // 获取label标签return label})err = validate.Struct(data)if err != nil {for _, err := range err.(validator.ValidationErrors) {return err.Translate(trans), errmsg.ERROR}}return "", errmsg.SUCCESS
}

我们可以来测试一下这段代码,效果如下:
在这里插入图片描述
我们可以看到我们成功实现了数据的校验功能,我们来看一下这一整个过程:

  1. 初始化valitor
	validate := validator.New()
  1. 编写中间件,实现国际化
    validator中其默认的错误信息是英文,一定程度上会影响我们阅读,我们可以尝试将其转换为其他语言,这里我选择转换为简体中文:
uni := ut.New(zh_Hans_CN.New())trans, _ := uni.GetTranslator("zh_Hans_CN")err := zh.RegisterDefaultTranslations(validate, trans) // 注册翻译器if err != nil {fmt.Println("err:", err)}
  1. 进行数据校验并返回错误消息
    err = validate.Struct(data)
    if err != nil {for _, err := range err.(validator.ValidationErrors) {return err.Translate(trans), errmsg.ERROR}
    }
    return "", errmsg.SUCCESS
    }
    

就这样我们就实现了一个通用的数据校验模块了。

http://www.mnyf.cn/news/38536.html

相关文章:

  • wordpress主题 清新宁波seo快速优化公司
  • cms仿站教程一份完整的营销策划方案
  • 私人网盘服务器产品seo是什么意思
  • 深圳网站建设开发公司哪家好最近一周的国内新闻
  • 国外b2b平台网站windows优化大师是哪个公司的
  • 菠菜网站的代理怎么做网络营销策划书的主要内容
  • 百度移动网站生成重庆网站推广联系方式
  • 做网站设计用什么软件企业推广的渠道有哪些
  • 刚刚上海突然宣布谷歌seo网站运营
  • 网站制作方案策划书seo去哪里学
  • 政府网站的信息资源建设情况软文推广营销平台
  • 网站制作需要注意什么做网站流程
  • 网站不备案会有什么影响吗谷歌seo和百度区别
  • 网站开发赚不赚钱百度金融
  • 灰色词优化培训优化关键词方法
  • 在线酒店预定网站制作搜索引擎优化培训班
  • 公司网站数据库表设计软文模板300字
  • 分红盘网站开发多少钱企业网站建设方案
  • 网站幻灯片 按纽黑科技引流工具
  • 中国建筑出版在线官网appseo页面排名优化
  • ps设计网站首页效果图承德网络推广
  • 网站建设的研发项目做网站哪家公司比较好而且不贵
  • 做网站相册什么平台发广告最有效
  • 网站在线开放端口东莞公司网上推广
  • 做网站导航按钮怎么猛网站优化员seo招聘
  • 中国建设银行北京招聘信息网站免费网站推广
  • 用phpmysql做网站快手流量推广免费网站
  • c2c网站建设策划书网络营销与策划
  • dw网页制作教程局中对齐seo搜索铺文章
  • 网站没有备案号免费二级域名查询网站