1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| syntax = "proto3"; // 版本
// 文档:https://developers.google.com/protocol-buffers/docs/proto3
package foo.bar; // 包
// 数据结构
message SearchRequest {
// 数据类型 数据字段名称 = 数据编号。数据编号只能递增
string query = 1;
int32 page_number = 2;
int32 per_page = 3;
}
message SearchData {
int32 id = 1;
// string name = 2; 被删除
// int32 age = 3; 被删除
// 常量的内嵌写法
enum Sex {
option allow_alias = true; // 将相同的值赋值给不同的常量,这个参数必须为true
UNKNOWN = 0;
MALE = 1;
MAN = 1;
FEMALE = 2;
WOMAN = 2;
}
Sex sex = 4; // 注意,这里是序号,常量的默认值统一为0
// 字典类型
map<string, int> tags = 5;
// 被删除的字段在兼容旧版本的情况下需标注保留
reserved 3;
reserved "name";
}
message SearchResponse {
int32 ec = 1;
string em = 2;
// 内嵌数据结构 可用 SearchResponse.Page 引用
message Page {
int32 page = 1;
int32 per_page = 2;
int32 total_page = 3;
int32 count = 4;
}
Page page = 4;
// repeated 表示数组
repeated SearchData data = 3;
}
// 总结:protobuf 与 json 数据类型对比 https://developers.google.com/protocol-buffers/docs/proto3#json
// 定义具体的RPC服务
service SearchService {
rpc Search (SearchRequest) returns (SearchResponse);
}
|