bind.go 755 B

123456789101112131415161718192021222324252627282930313233343536
  1. package bind
  2. import (
  3. "dy-admin/pkg/log"
  4. "dy-admin/pkg/rescode"
  5. "github.com/gin-gonic/gin"
  6. "github.com/gin-gonic/gin/binding"
  7. )
  8. func Bind(c *gin.Context, d interface{}, bindings ...binding.Binding) error {
  9. var err error
  10. if len(bindings) == 0 {
  11. bindings = constructor.GetBindingForGin(d)
  12. }
  13. for i := range bindings {
  14. if bindings[i] == nil {
  15. err = c.ShouldBindUri(d)
  16. } else {
  17. err = c.ShouldBindWith(d, bindings[i])
  18. }
  19. if err != nil && err.Error() == "EOF" {
  20. log.Warn("request body is not present anymore. ")
  21. err = nil
  22. continue
  23. }
  24. if err != nil {
  25. break
  26. }
  27. }
  28. if err != nil {
  29. err = rescode.RegisterErrorWithCause(err, rescode.NewErrCode(rescode.HttpCode400, 990000, "解析body参数错误", ""))
  30. }
  31. return err
  32. }