validator.go 731 B

123456789101112131415161718192021222324252627282930
  1. package request
  2. import (
  3. "github.com/go-playground/validator/v10"
  4. )
  5. type Validator interface {
  6. GetMessages() ValidatorMessages
  7. }
  8. type ValidatorMessages map[string]string
  9. // GetErrorMsg 获取错误信息
  10. func GetErrorMsg(request interface{}, err error) string {
  11. if _, isValidatorErrors := err.(validator.ValidationErrors); isValidatorErrors {
  12. _, isValidator := request.(Validator)
  13. for _, v := range err.(validator.ValidationErrors) {
  14. // 若 request 结构体实现 Validator 接口即可实现自定义错误信息
  15. if isValidator {
  16. if message, exist := request.(Validator).GetMessages()[v.Field()+"."+v.Tag()]; exist {
  17. return message
  18. }
  19. }
  20. return v.Error()
  21. }
  22. }
  23. return "数据格式错误"
  24. }