Merge pull request #855 from gin-gonic/feat/662
feat(context): add idiomatic binding functions for clear err managment
This commit is contained in:
		
							
								
								
									
										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)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user