mirror of
https://github.com/gin-gonic/gin.git
synced 2026-04-29 15:08:19 +08:00
quick fix to skip binding body without content type
This commit is contained in:
parent
64a0c537f7
commit
79c32ff4aa
@ -41,6 +41,12 @@ func (allBinding) BindMany(req *http.Request, uriParams map[string][]string, obj
|
||||
if contentTypeLastIdx != -1 {
|
||||
contentType = contentType[:contentTypeLastIdx]
|
||||
}
|
||||
|
||||
// if no Content-Type, assume request has no body. This avoids binding query params again in binding.Default
|
||||
if contentType == "" {
|
||||
return validate(obj)
|
||||
}
|
||||
|
||||
b := Default(req.Method, contentType)
|
||||
// final validation done by whatever binding is selected here
|
||||
return b.Bind(req, obj)
|
||||
|
||||
18
context.go
18
context.go
@ -808,10 +808,11 @@ func (c *Context) BindUri(obj any) error {
|
||||
// It will abort the request with HTTP 400 if any error occurs.
|
||||
//
|
||||
// Note:
|
||||
// - Caller must tag struct fields appropriately for the desired binding (eg `header:"xxx"` vs `uri:"xxx"`)
|
||||
// - Caller must ensure no duplication between field names (else use separate binding engines instead)
|
||||
// - Caller must provide Content-Type header to select the correct body binding (eg "application/json" for JSON binding)
|
||||
// - Binding validation tags are verified after all request parts have been bound
|
||||
// - Caller must tag struct fields appropriately for the desired binding (eg `header:"xxx"` vs `uri:"xxx"`)
|
||||
// - Caller must ensure no duplication between field names (else use separate binding engines instead)
|
||||
// - Caller must provide Content-Type header to select the correct body binding (eg "application/json" for JSON binding).
|
||||
// A request without Content-Type will result in no body binding
|
||||
// - Binding validation tags are verified after all request parts have been bound
|
||||
func (c *Context) BindAll(obj any) error {
|
||||
err := c.ShouldBindAll(obj)
|
||||
if err != nil {
|
||||
@ -945,10 +946,11 @@ func (c *Context) ShouldBindUri(obj any) error {
|
||||
// Like c.Bind() but this method does not set the response status code to 400 or abort if input is not valid.
|
||||
//
|
||||
// Note:
|
||||
// - Caller must tag struct fields appropriately for the desired binding (eg `header:"xxx"` vs `uri:"xxx"`)
|
||||
// - Caller must ensure no duplication between field names (else use separate binding engines instead)
|
||||
// - Caller must provide Content-Type header to select the correct body binding (eg "application/json" for JSON binding)
|
||||
// - Binding validation tags are verified after all request parts have been bound
|
||||
// - Caller must tag struct fields appropriately for the desired binding (eg `header:"xxx"` vs `uri:"xxx"`)
|
||||
// - Caller must ensure no duplication between field names (else use separate binding engines instead)
|
||||
// - Caller must provide Content-Type header to select the correct body binding (eg "application/json" for JSON binding).
|
||||
// A request without Content-Type will result in no body binding
|
||||
// - Binding validation tags are verified after all request parts have been bound
|
||||
func (c *Context) ShouldBindAll(obj any) error {
|
||||
uriParams := make(map[string][]string, len(c.Params))
|
||||
for _, v := range c.Params {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user