protobuf 语法格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
protobuf 语法格式
Protobuf(Protocol Buffers)的语法格式主要包括以下几个部分:
1. 基本规范:
文件以`.proto`作为文件后缀。
除结构定义外的语句以分号结尾。
结构定义可以包含`message`, `service`, `enum`等。
2. 消息定义:
消息类型使用`message`关键字进行定义,并使用驼峰命名方式。
字段定义包含字段的数据类型、名称、标识符和可能的默认值。
例如:```
protobuf`message SongRequest {
required string song_name = 1;
required int32 song_id = 2;
}`
```
3. 字段规则:
字段格式:限定修饰符(如`required`, `optional`)数据类型字段名称 `=` 字段编码值 [字段默认值]。
限定修饰符:例如`required`和`optional`,表示字段是否是必需的。
数据类型:例如`string`, `int32`, `enum`等。
字段名称:使用小写字母和下划线分隔的命名方式。
字段编码值:用于在二进制格式中识别字段的唯一标识符。
这个值一旦分配后就不能再改变。
最小的标识号可以从1开始,最大到2^229 - 1。
此外,还有特定的标识号范围(如是预留的,不应使用。
4. 枚举类型:
使用`enum`关键字定义,并使用驼峰命名方式。
枚举值使用大写字母和下划线分隔的命名方式。
例如:
```
protobuf`enum Color {
RED = 1;
BLUE = 2;
}`
```
5. 服务与RPC方法定义:
使用`service`关键字定义服务,并使用驼峰命名方式。
在服务内可以定义RPC方法。
例如:
```
protobuf`service SongService {
rpc GetSong (GetSongRequest) returns (SongResponse);
}`
```
6. RPC方法参数与返回值:
在RPC方法的参数和返回值中,需要定义消息类型,如上述的
`GetSongRequest`和`SongResponse`。
7. 注释:注释使用`//`开头,并在该行结束。
块注释使用`/`开头,并以`/`结尾。
注释内容可以跨越多行。
例如:
```protobuf
// This is a single-line comment.
/ This is a block comment. /
```。