【Gin】绑定参数到结构

1.绑定的方法

在Gin中,提供了两套绑定参数到结构体的方法

  1. 一套是"ShouldBind"开头的方法,底层使用ShouldBindWith()方法处理,特点是如果发生绑定错误,直接返回错误,由程序员来处理该错误。
func (c *Context) ShouldBindWith(obj any, b binding.Binding) error {
	return b.Bind(c.Request, obj)
}
  1. 另外一套"Bind"开头的方法,底层使用的是MustBindWith,而MustBindWith直接使用了ShouldBindWith()去绑定。特点是如果发生绑定错误,请求会被终止,自行设置响应状态码为400,请求头Content-Type被设置为text/plain; charset=utf-8,不能再去返回错误的状态码。
func (c *Context) MustBindWith(obj any, b binding.Binding) error {
	if err := c.ShouldBindWith(obj, b); err != nil {
		c.AbortWithError(http.StatusBadRequest, err).SetType(ErrorTypeBind) //不想要:errcheck
		return err
	}
	return nil
}
- 当绑定错误发生的时候,如果后续依旧设置新的响应代码,会触发警告,状态码被覆盖。
- 特别的,Bind(obj any) 会根据Content-type自动选择对应类型的绑定器
- BindWith(obj any, b binding.Binding) 也只调用MustBindWith(),只不过调用前增加了一个日志提示。

2.使用方式

  • ShouldBind 自动根据content/type确定绑定参数的类型,能绑定query,post,html参数

GET或者POST请求,同时具有Query参数
绑定GET请求时,优先处理Query参数,
绑定POST请求时,优先处理Postform参数,

  • ShouldBindJSON 绑定JSON参数
  • ShouldBindUri 绑定path参数
  • ShouldBindQuery 绑定query参数
  • ShouldBindWith 自动定义绑定对象去绑定参数

MustBind系列类似上边。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值