[go-每日一库] golang validator参数校验

互联网 2022/6/23 23:25:57

1.validator简介 validator是一个开源的验证器包,可以快速校验输入信息是否符合自定规则。源码地址: https://github.com/go-playground/validator 本地开发安装库: go get github.com/go-playground/validator2.常用示例 例如我们使用golang的gin框架进行web server的开…

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

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>