# zvalidation **Repository Path**: youkelike/zvalidation ## Basic Information - **Project Name**: zvalidation - **Description**: gin、grpc通用验证组件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-11 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 只做跟业务无关的验证 - 这是 http 服务和 grpc 通用的验证组件, - 每个模型有多个接口,每个接口都有一个 dto,每个 dto 都要有对应的验证方法, - 在 http 服务接口中,要先把请求数据绑定到 dto,然后调用验证方法验证 dto,通过验证后,再调用 biz 中的方法, - 在 grpc 的服务接口中,拿到的 dto 直接可以用于调用 biz,所以 dto 的验证放到了前面的 interceptor 中, ### validator 上的验证方法, - 每个 grpc 方法的请求参数(dto)对应一个验证方法,验证方法命名都是:"Validate" + 请求参数名, - 每个模型一个文件,文件中有各自模型字段对应的验证函数映射表、和各自的 dto 对象对应的 ValidateXxx 方法, ### grpc 服务中通过中间件使用 validator, - 构造中间件时,通过反射拿到 validator 上面的所有验证方法(所有模型的的验证方法都在这),并用请求参数的名字做为 key,验证方法做为 value 构造映射, - 请求到来的时候,又通过反射拿到请求参数的名字,做为 key 去前面构造的映射找对应的验证方法,调用验证方法进行验证, ### 相比 gin 的 validator 插件, - 每个模型的验证方法放到不同文件管理,模型验证方法按需加载, - 不需要给模型字段加 tag,通过反射自动查找调用字段名对应的已注册验证函数,