Merge pull request #855 from gin-gonic/feat/662
feat(context): add idiomatic binding functions for clear err managment
This commit is contained in:
commit
1a9cba2cc7
18
context.go
18
context.go
@ -438,14 +438,22 @@ func (c *Context) BindJSON(obj interface{}) error {
|
|||||||
return c.BindWith(obj, binding.JSON)
|
return c.BindWith(obj, binding.JSON)
|
||||||
}
|
}
|
||||||
|
|
||||||
// BindWith binds the passed struct pointer using the specified binding engine.
|
// MustBindWith binds the passed struct pointer using the specified binding
|
||||||
|
// engine. It will abort the request with HTTP 400 if any error ocurrs.
|
||||||
// See the binding package.
|
// See the binding package.
|
||||||
func (c *Context) BindWith(obj interface{}, b binding.Binding) error {
|
func (c *Context) MustBindWith(obj interface{}, b binding.Binding) (err error) {
|
||||||
if err := b.Bind(c.Request, obj); err != nil {
|
if err = c.ShouldBindWith(obj, b); err != nil {
|
||||||
c.AbortWithError(400, err).SetType(ErrorTypeBind)
|
c.AbortWithError(400, err).SetType(ErrorTypeBind)
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShouldBindWith binds the passed struct pointer using the specified binding
|
||||||
|
// engine.
|
||||||
|
// See the binding package.
|
||||||
|
func (c *Context) ShouldBindWith(obj interface{}, b binding.Binding) error {
|
||||||
|
return b.Bind(c.Request, obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClientIP implements a best effort algorithm to return the real client IP, it parses
|
// ClientIP implements a best effort algorithm to return the real client IP, it parses
|
||||||
|
@ -4,9 +4,22 @@
|
|||||||
|
|
||||||
package gin
|
package gin
|
||||||
|
|
||||||
import "log"
|
import (
|
||||||
|
"github.com/gin-gonic/gin/binding"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
func (c *Context) GetCookie(name string) (string, error) {
|
func (c *Context) GetCookie(name string) (string, error) {
|
||||||
log.Println("GetCookie() method is deprecated. Use Cookie() instead.")
|
log.Println("GetCookie() method is deprecated. Use Cookie() instead.")
|
||||||
return c.Cookie(name)
|
return c.Cookie(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BindWith binds the passed struct pointer using the specified binding engine.
|
||||||
|
// See the binding package.
|
||||||
|
func (c *Context) BindWith(obj interface{}, b binding.Binding) error {
|
||||||
|
log.Println(`BindWith(\"interface{}, binding.Binding\") error is going to
|
||||||
|
be deprecated, please check issue #662 and either use MustBindWith() if you
|
||||||
|
want HTTP 400 to be automatically returned if any error occur, of use
|
||||||
|
ShouldBindWith() if you need to manage the error.`)
|
||||||
|
return c.MustBindWith(obj, b)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user