参数校验
在使用 validate 之前首先需要安装 proto-gen-validate。
如果使用中遇到无法使用或者生成的代码中 包含
规则示例
下面为大家列举几种常用类型的参数校验示例,更多的示例可以在 proto-gen-validate 文档中查看。
// 参数必须大于 0
// 参数必须在 0 到 120 之间
int32 age = 2 [(validate.rules).int64 = {gt:0, lte: 120}];
// 参数是 1 或 2 或 3
uint32 code = 3 [(validate.rules).uint32 = {in: [1,2,3]}];
// 参数不能是 0 或 99.99
float score = 1 [(validate.rules).float = {not_in: [0, 99.99]}];
布尔类型
bool state = 5 [(validate.rules).bool.const = true];
// 参数必须为 false
bool state = 5 [(validate.rules).bool.const = false];
文本类型
消息体
// 参数为必填项
Info info = 11 [(validate.rules).message.required = true];
string address = 1;
}
生成代码
1.直接使用protoc
生成
protoc --proto_path=. \
--go_out=paths=source_relative:. \
--validate_out=paths=source_relative,lang=go:. \
xxxx.proto
执行命令
make validate
我们可以将 validate 中间件注入到 http 或者 grpc 中,在有请求进入时 validate 中间件会自动对参数根据 proto 中编写的规则进行校验。
http
httpSrv := http.NewServer(
http.Address(":8000"),
http.Middleware(
validate.Validator(),