mirror of
https://github.com/gin-gonic/gin.git
synced 2025-04-06 03:57:46 +08:00
Merge 67d4ff8f6e6da871511bd2815edadcaa5c8f7b7f into 8763f33c65f7df8be5b9fe7504ab7fcf20abb41d
This commit is contained in:
commit
1507382feb
17
context.go
17
context.go
@ -5,7 +5,9 @@
|
||||
package gin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"log"
|
||||
@ -722,6 +724,21 @@ func (c *Context) Bind(obj any) error {
|
||||
|
||||
// BindJSON is a shortcut for c.MustBindWith(obj, binding.JSON).
|
||||
func (c *Context) BindJSON(obj any) error {
|
||||
|
||||
body, err := io.ReadAll(c.Request.Body)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to read body: %v", err)
|
||||
}
|
||||
|
||||
// If the body is empty, set it to {}
|
||||
if len(body) == 0 {
|
||||
body = []byte("{}")
|
||||
c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) // Set to {} to trigger the error
|
||||
return c.MustBindWith(obj, binding.JSON)
|
||||
}
|
||||
|
||||
// Restore the body since it was read
|
||||
c.Request.Body = io.NopCloser(bytes.NewBuffer(body))
|
||||
return c.MustBindWith(obj, binding.JSON)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user