gin: 接收参数时校验

一,安装第三方库:

$ go get -u github.com/go-playground/validator/v10
go: downloading github.com/go-playground/validator/v10 v10.24.0
go: downloading github.com/gabriel-vasile/mimetype v1.4.8
go: downloading golang.org/x/crypto v0.32.0
go: downloading golang.org/x/net v0.34.0
go: upgraded github.com/gabriel-vasile/mimetype v1.4.3 => v1.4.8
go: upgraded github.com/go-playground/validator/v10 v10.20.0 => v10.24.0
go: upgraded golang.org/x/crypto v0.23.0 => v0.32.0
go: upgraded golang.org/x/net v0.25.0 => v0.34.0
go: upgraded golang.org/x/sys v0.20.0 => v0.29.0
go: upgraded golang.org/x/text v0.15.0 => v0.21.0

 

二,校验get参数

代码:

//请求参数struct
type ImageListRequest struct {
	Cid        int  `form:"cid" json:"cid" binding:"required,gte=1,lte=100"`
	Category       string `form:"category" json:"category" binding:"required,min=2,max=10"`
}


//得到列表
func (ic *ImageController) List(c *gin.Context) {

	var req ImageListRequest
	if err := c.ShouldBindQuery(&req); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"msg": err.Error(),
		})
		return
	}

	fmt.Println("cid:",req.Cid)
	fmt.Println("category:",req.Category)
	
	c.JSON(http.StatusOK, gin.H{
		"message": "image list",
	})
}

测试效果:参数不合法

参数合法

三,校验post参数

//请求参数struct
type ImageAddRequest struct {
	Cid        int  `form:"cid" json:"cid" binding:"required,gte=1,lte=100"`
	Title       string `form:"title" json:"title" binding:"required,min=2"`
}

//添加一条
func (ic *ImageController) Add(c *gin.Context) {

	var req ImageAddRequest
	if err := c.ShouldBind(&req); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"msg": err.Error(),
		})
		return
	}

	fmt.Println("cid:",req.Cid)
	fmt.Println("title:",req.Title)
	
	//返回
	c.JSON(http.StatusOK, gin.H{
		"message": "image detail",
	})
}

 

测试效果:

合法时

posted @   刘宏缔的架构森林  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
历史上的今天:
2023-01-31 flutter:安装使用第三方库:以dio为例(flutter 3.7.0 / dio 4.0.6)
2023-01-31 flutter:新创建一个项目(flutter 3.7.0)
点击右上角即可分享
微信分享提示