在 proto3 中定义必填字段

Defined required fields in proto3

我在 Php 中使用版本 3 的 protobuf。下面是我的原型文件

syntax ="proto3";

package message.events.user.v1;

message UserWasActivatedMessage {
  int32 userId = 1 ;
  string eventType = 2;
}

这是我的原型文件,每当我没有设置任何用户或事件时,原型会自动使用我不想要的默认值设置它们,现在我希望用户在发送消息时明确定义每个值因为这将减少不定义任何值的机会

这是 Protocol Buffer 的一个“特性”,不能使用标准 SDK 覆盖。参见:

https://developers.google.com/protocol-buffers/docs/proto3#default

我假设具有默认值的要求是在线消息的无模式性质的结果,其中必须包含所有字段并且无法将值指定为 nil。

是的,nil 和 default 之间的含义有所不同,但您无法在协议缓冲区中反映出来。