diff --git a/README.md b/README.md index 92739c0..684f549 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ # 数据验证规则 -数据验证封装库, 基于 github.com/go-playground/validator/v10 二次封装 \ No newline at end of file +数据验证封装库, 基于 github.com/go-playground/validator/v10 二次封装 + +## 二次封装原因 + +**validator/v10** 本身功能十分强大, 所以选择此库作为参数验证规则库, 但是此库使用前提是定义明确的结构体、map, 并且按需给固定的字段属性注册指定的验证方法. +而实际开发中, 数据验证规则往往是动态的, 所以需要二次封装, 使其更加灵活. +同时, 二次封装还可以在验证之前做一些基础的数据格式化, 如字符串去空格、类型转换等.s diff --git a/define.go b/define.go new file mode 100644 index 0000000..4c23580 --- /dev/null +++ b/define.go @@ -0,0 +1,34 @@ +// Package validate ... +// +// Description : validate ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2025-03-18 14:33 +package validate + +import ( + "git.zhangdeman.cn/zhangdeman/consts" +) + +const ( + TagErrMsg = "err" // json结构体中, 错误信息 tag 字段 + TagRule = "validator" // json结构体中, 验证规则 rule 字段 + TagDefaultValue = "d" // json结构体中默认值标签 +) + +// Rule 规则定义 +type Rule struct { + Tag string `json:"tag" dc:"规则标签,如:required, email, phone, etc."` // 规则标签,如:required, email, phone, etc. + Args []string `json:"args" dc:"规则参数"` // 规则参数,如: Tag=min, Args=[1], 则会转化成验证规则 min=1 + Errmsg string `json:"errmsg" dc:"规则验证不通过时, 报错的信息"` // 规则验证不通过时, 报错的信息 +} + +// StructField 结构体字段定义 +type StructField struct { + JsonTag string `json:"json_tag" dc:"字段对外输出的json标签"` // 结构体字段名称 + Type consts.DataType `json:"type" dc:"字段的数据类型"` // 字段的数据类型 + Required bool `json:"required" dc:"是否必传"` // 对应验证规则的 required 属性, 在非必传的情况下, 字段不存在, 不会进行规则验证, 字段存在, 才会进行验证, Required == false 时, 会在 RuleList 检测是否有required 规则 + RuleList []Rule `json:"rule_list" dc:"字段规则列表"` // 字段规则列表 + DefaultValue string `json:"default_value" dc:"字段默认值"` // 字段默认值, 仅对非必传字段生效, 统一用字符串类型, 后面会转换成 FieldType 类型 +} diff --git a/go.mod b/go.mod index 3997e72..afaf1d5 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module git.zhangdeman.cn/gateway/validate go 1.24.1 + +require git.zhangdeman.cn/zhangdeman/consts v0.0.0-20250227040546-863c03f34bb8 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..4b6536c --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20250227040546-863c03f34bb8 h1:VEifPc+vkpEQoX9rj7zxmT1m+IA81XjOxe7+Z1aqWNM= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20250227040546-863c03f34bb8/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k=