Ai
1 Star 0 Fork 1

go-genie/httptransport

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
validator.go 1.06 KB
一键复制 编辑 原始数据 按行查看 历史
文兄 提交于 2025-06-17 15:56 +08:00 . init
package transformers
import (
"context"
"gitee.com/go-genie/httptransport/validator"
typex "gitee.com/go-genie/xx/types"
)
type MayValidator interface {
NewValidator(ctx context.Context, typ typex.Type) (validator.Validator, error)
}
type WithNamedByTag interface {
NamedByTag() string
}
func NewValidator(
ctx context.Context,
fieldType typex.Type,
tags map[string]Tag,
omitempty bool,
transformer Transformer,
) (validator.Validator, error) {
if withNamedByTag, ok := transformer.(WithNamedByTag); ok {
if namedTagKey := withNamedByTag.NamedByTag(); namedTagKey != "" {
ctx = validator.ContextWithNamedTagKey(ctx, namedTagKey)
}
}
if t, ok := transformer.(MayValidator); ok {
return t.NewValidator(ctx, fieldType)
}
mgr := validator.ValidatorMgrFromContext(ctx)
tagValidate := tags["validate"]
return mgr.Compile(
ctx, []byte(tagValidate), fieldType, func(rule validator.RuleModifier) {
if omitempty {
rule.SetOptional(true)
}
if defaultValue, ok := tags["default"]; ok {
rule.SetDefaultValue([]byte(defaultValue))
}
},
)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go-genie/httptransport.git
git@gitee.com:go-genie/httptransport.git
go-genie
httptransport
httptransport
v1.1.4

搜索帮助