有没有办法将protobuf数字字段限制在一定范围内?

问题描述 投票:0回答:1

假设我有一个像这样的 protobuf 消息

message Person {
   uint32 age = 1;
}

有没有办法将字段

age
限制在一定范围内?就像
[0; 120]
。现在我只是以编程方式进行这些检查

if p.Age < 0 || p.Age > 120 {
    return err
} 

但是一次又一次地编写相同的错误消息是很乏味的(实际上我有一个更大的消息)。在使用此 protobuf 定义的所有项目中进行相同的约束验证也很棒 - 现在我们需要在开发人员之间非正式地协调它。

go protocol-buffers
1个回答
0
投票
message Person {
   uint32 age = 1; [
       (buf.validate.field).uint32.gt = 0,
       (buf.validate.field).uint32.lt = 120,
   ];
}

您需要

import "buf/validate/validate.proto"

请参阅https://github.com/bufbuild/protovalidate/blob/b0c0e8aaf81210677dd7e4d8b589bcf4ba110a04/proto/protovalidate/buf/validate/validate.proto#L960了解更多详情

© www.soinside.com 2019 - 2024. All rights reserved.