在Gin中,提供了两套绑定参数到结构体的方法
func (c *Context) ShouldBindWith(obj any, b binding.Binding) error {
return b.Bind(c.Request, obj)
}
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(),只不过调用前增加了一个日志提示。
GET或者POST请求,同时具有Query参数
绑定GET请求时,优先处理Query参数,
绑定POST请求时,优先处理Postform参数,
MustBind系列类似上边。