三十四、模型绑定与验证
目录
定义:
一、整体代码
结果
定义:
模型绑定意味着将请求数据直接绑定到go的结构体中,然后进行输入或输出的验证
一、整体代码
// 请求
type HelloReq struct {Name string `json:"name" binding:"required"`
}// 返回
type HelloRsp struct {Msg string `json:"msg" binding:"required"`
}func (c *CmsApp) Hello(ctx *gin.Context) {//定义req为HelloReq结构体var req HelloReq//请求绑定req,当请求体中不包含name则会报错并返回if err := ctx.ShouldBindJSON(&req); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"err": err.Error()})return}//返回rsp,返回接收到的数据体ctx.JSON(http.StatusOK, gin.H{"code": http.StatusOK,"msg": "hello","data": &HelloRsp{Msg: fmt.Sprintf("name is %s", req.Name),},})
}
结果
{"code": 200,"data": {"msg": "name is luckey"},"msg": "hello"
}
故意输错name变为names
则会报错
{"err": "Key: 'HelloReq.Name' Error:Field validation for 'Name' failed on the 'required' tag"
}