- Protocol Buffers v3
Protocol Buffers v3
本章将讨论在设计 API 时如何使用 Protocol Buffers。为了简化开发者体验并提高运行效率,gRPC API 应该使用 Protocol Buffers v3(proto3)进行API定义。
Protocol Buffers 是一种简单的语言中立并且平台中立的接口定义语言(IDL),用于定义数据结构模式和编程接口。它支持二进制和文本传输格式,并且在不同平台上使用不同的传输协议。
Proto3 是 Protocol Buffers 的最新版本,包括以下更改:
- 存在字段,也称为
hasField
,不适用于基本类型字段。未设置的基本泪ing字段具有语言特定的默认值。- 消息存在字段仍然可用,其可以使用编译器生成的
hasField
方法来测试,或者和 null 比较,或由实现定义的标记值。
- 消息存在字段仍然可用,其可以使用编译器生成的
- 用户定义的默认值不再可用。
- 枚举(Enum)定义必须从零开始。
- 必填(Required fields)字段不再可用。
- 扩展(Extensions)不再可用。改用
google.protobuf.Any
代替。- 由于向后和运行时兼容性原因,
google/protobuf/descriptor.proto
作为这一规则的例外。
- 由于向后和运行时兼容性原因,
- 组(Group)语法已删除。
删除这些功能的原因是使 API 设计更简单,更稳定,更高效。例如,通常需要在记录消息之前过滤一些字段,例如删除敏感信息,如果字段是必需的,则不可能执行删除操作。
有关详细信息,请参阅协议Protocol Buffers详细文档。