Skip to content

Commit

Permalink
Merge pull request #855 from gin-gonic/feat/662
Browse files Browse the repository at this point in the history
feat(context): add idiomatic binding functions for clear err managment
  • Loading branch information
javierprovecho authored Jun 27, 2017
2 parents c8af276 + 73e5fcd commit 1a9cba2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
18 changes: 13 additions & 5 deletions context.go
Original file line number Diff line number Diff line change
Expand Up @@ -438,14 +438,22 @@ func (c *Context) BindJSON(obj interface{}) error {
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.
func (c *Context) BindWith(obj interface{}, b binding.Binding) error {
if err := b.Bind(c.Request, obj); err != nil {
func (c *Context) MustBindWith(obj interface{}, b binding.Binding) (err error) {
if err = c.ShouldBindWith(obj, b); err != nil {
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
Expand Down
15 changes: 14 additions & 1 deletion deprecated.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,22 @@

package gin

import "log"
import (
"github.com/gin-gonic/gin/binding"
"log"
)

func (c *Context) GetCookie(name string) (string, error) {
log.Println("GetCookie() method is deprecated. Use Cookie() instead.")
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)
}

0 comments on commit 1a9cba2

Please sign in to comment.