gin.go 460 B

1234567891011121314151617181920212223242526
  1. package common
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "github.com/gin-gonic/gin"
  6. "io"
  7. )
  8. func UnmarshalBodyReusable(c *gin.Context, v any) error {
  9. requestBody, err := io.ReadAll(c.Request.Body)
  10. if err != nil {
  11. return err
  12. }
  13. err = c.Request.Body.Close()
  14. if err != nil {
  15. return err
  16. }
  17. err = json.Unmarshal(requestBody, &v)
  18. if err != nil {
  19. return err
  20. }
  21. // Reset request body
  22. c.Request.Body = io.NopCloser(bytes.NewBuffer(requestBody))
  23. return nil
  24. }