目录
定义:
模型绑定意味着将请求数据直接绑定到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"
}