[go-每日一库] golang validator参数校验
2022/6/23 23:25:11
本文主要是介绍[go-每日一库] golang validator参数校验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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.
这篇关于[go-每日一库] golang validator参数校验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站