| package common | |
| import ( | |
| "bytes" | |
| "encoding/json" | |
| "github.com/gin-gonic/gin" | |
| "io" | |
| ) | |
| func UnmarshalBodyReusable(c *gin.Context, v any) error { | |
| requestBody, err := io.ReadAll(c.Request.Body) | |
| if err != nil { | |
| return err | |
| } | |
| err = c.Request.Body.Close() | |
| if err != nil { | |
| return err | |
| } | |
| err = json.Unmarshal(requestBody, &v) | |
| if err != nil { | |
| return err | |
| } | |
| // Reset request body | |
| c.Request.Body = io.NopCloser(bytes.NewBuffer(requestBody)) | |
| return nil | |
| } | |