SuperAPI AI 工具集

go-validator

编程与开发

查看项目

更新于 10-16 05:04

技能介绍

用途:按 Go 模块化架构约定生成校验器(validator)文件,适用于域名校验(密码、邮箱、用户名等)、输入净化和业务规则校验,以及任何需返回类型化领域错误的校验逻辑。

主要能力与结构:每个校验器采用两文件模式。端口接口位于 internal/modules/<module>/ports/<validator_name>_validator.go,实现位于 internal/modules/<module>/validator/<validator_name>_validator.go。接口文件仅含接口定义及文档注释;实现文件按包声明与导入、常量、结构体、接口断言(var _ ports.XxxValidator = (*XxxValidator)(nil))、构造函数 NewXxxValidator、方法(如 Validate)顺序组织。

变体:无状态校验器(无外部依赖,最常见);有状态校验器(依赖外部数据或配置,如 UserRepository、minLen/maxLen);多字段校验器(如注册场景的 ValidateEmail、ValidatePassword、ValidatePasswordMatch)。

使用方式:在端口文件定义接口,在实现文件写具体逻辑,将校验规则定义为包级常量;错误必须从模块 errs 包返回类型化领域错误,新增自定义错误需在 locales/en.json 及所有其他现有语言文件中添加翻译键值;执行 I/O 的校验器须将 context.Context 作为首个参数。命名上接口与实现结构体同名(由包区分),构造函数返回指针,单用途方法名用 Validate。通过 internal/modules/<module>/fx.go 中的 fx.Provide/fx.Annotate 完成依赖注入,原始类型构造参数建议经配置或 fx.Supply 提供。

测试与验证:实现需覆盖有效输入、各类无效条件与边界值(空字符串、边界长度、特殊字符)的单元测试,测试文件为 validator/<validator_name>_validator_test.go。工作流最后运行 make test、make lint、make nilaway。

限制:资料未提供该技能的收费、价格、支持平台或效果数据,也未提供安装命令,暂未提供相关信息。