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",
})
}
测试效果:
合法时
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!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)