[go-每日一库] golang validator参数校验
互联网 2022/6/23 23:25:57
1.validator简介
validator是一个开源的验证器包,可以快速校验输入信息是否符合自定规则。源码地址: https://github.com/go-playground/validator
本地开发安装库:
go get github.com/go-playground/validator
2.常用示例
例如我们使用golang的gin框架进行web server的开发,对于传来的json参数进行校验,这个是必不可少的,只要是传过来的参数,就不可信。
话不多说,直接上代码示例:
package main import ( "github.com/gin-gonic/gin" "github.com/go-playground/validator/v10" "net/http" ) type User struct { Username string `json:"username" validate:"required,min=4,max=20"` // 必填字段,限制长度 Password string `json:"password" validate:"required"` // 必填字段 Email string `json:"email" validate:"required,email"` // 限于email格式 Phone string `json:"phone" validate:"omitempty,numeric"` // 限于数字型 Hobby []string `json:"hobby" validate:"omitempty"` // 空时忽略 Age int `json:"age" validate:"omitempty,gt=18,lt=100"` // 限制大小 Gender string `json:"gender" validate:"omitempty,oneof=male female"` // 限于男女 } func main() { router := gin.Default() router.POST("/login", login) _ = router.Run(":8080") } func login(ctx *gin.Context) { var user User err := ctx.ShouldBindJSON(&user) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{"msg": err.Error()}) return } // repeat parse use below //_ = ctx.ShouldBindWith(&user, binding.JSON) validate := validator.New() err = validate.Struct(user) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{"msg": err.Error()}) return } ctx.JSON(http.StatusOK, gin.H{"msg": "success"}) }
启动server,postman测试,可以看到哪些字段因为某个校验不能通过校验,导致error, 是不是很友好呢,不过建议返回前台校验参数失败即可,具体校验详情作为日志输出到server的log文件中。
参考文档
- 1.Gin框架(十一):验证器Validator使用
- 2.github-官方库
- 3.
- 4.

关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[[go-每日一库] golang validator参数校验]http://www.zyiz.net/tech/detail-330664.html
- 2022-08-09MongoDB添加普通用户
- 2022-08-09MongoDB集群日志轮转切割
- 2022-08-09Django连接数据库
- 2022-08-08Golang 程序读取yaml配置文件
- 2022-08-08FileZilla使用SFTP协议连接Ubuntu报错:filezilla Couldn‘t agree a key exchange algorithm 。
- 2022-08-07Django 中使用 ckEditor 生成文章编辑器
- 2022-08-05【学习打卡】第2天 吃透面向对象【Golang实现版】
- 2022-08-04Django REST framework之BasicAuthentication
- 2022-08-04Django解决浏览器跨域问题
- 2022-08-04Air实现Go程序的热重载(热加载)