mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 09:34:57 +08:00
Param error message generate
This commit is contained in:
@@ -3,20 +3,43 @@ package controllers
|
||||
import (
|
||||
"Cloudreve/serializer"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"gopkg.in/go-playground/validator.v8"
|
||||
)
|
||||
|
||||
// ParamErrorMsg 根据Validator返回的错误信息给出错误提示
|
||||
func ParamErrorMsg(filed string, tag string) string {
|
||||
// 未通过验证的表单域与中文对应
|
||||
fieldMap := map[string]string{
|
||||
"UserName": "用户名",
|
||||
"Password": "密码",
|
||||
}
|
||||
// 未通过的规则与中文对应
|
||||
tagMap := map[string]string{
|
||||
"required": "不能为空",
|
||||
"min": "太短",
|
||||
"max": "太长",
|
||||
}
|
||||
fieldVal, findField := fieldMap[filed]
|
||||
tagVal, findTag := tagMap[tag]
|
||||
if findField && findTag {
|
||||
// 返回拼接出来的错误信息
|
||||
return fieldVal + tagVal
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// ErrorResponse 返回错误消息
|
||||
func ErrorResponse(err error) serializer.Response {
|
||||
// 处理 Validator 产生的错误
|
||||
if ve, ok := err.(validator.ValidationErrors); ok {
|
||||
for _, e := range ve {
|
||||
return serializer.ParamErr(
|
||||
fmt.Sprintf("%s %s", e.Field, e.Tag),
|
||||
ParamErrorMsg(e.Field, e.Tag),
|
||||
err,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if _, ok := err.(*json.UnmarshalTypeError); ok {
|
||||
return serializer.ParamErr("JSON类型不匹配", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user