三十四、模型绑定与验证

目录

定义:

一、整体代码

结果


定义:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值