proto编写
1 | .proto文件以包声明开头 |
2 | // 字段类型 |
3 | bool,int32,float,double,和string |
- 范例
1
syntax = "proto3";
2
package admin;
3
4
// 内部运营权限管理服务
5
service AdminGrpc {
6
rpc GetAuthInfo (AdminRequest) returns (AdminResponse);
7
rpc AddUser (AdminRequest) returns (AdminResponse);
8
rpc DeleteUser (AdminRequest) returns (AdminResponse);
9
rpc UpdateUser (AdminRequest) returns (AdminResponse);
10
}
11
12
// 请求参数
13
message AdminRequest {
14
// 用户名
15
string user_name = 1;
16
17
// 用户类型(默认管理员)
18
enum UserType {
19
NORMAL = 0; // 普通用户
20
ADMIN = 1; // 管理员
21
}
22
UserType use_type = 2;
23
24
// 用户手机号
25
string phone = 3;
26
27
// 权限信息返回类型
28
enum AuthInfoResType {
29
ALL = 0; // 全部信息
30
MODULE = 1; // 按模块化信息
31
AUTH = 2; // 单权限信息
32
}
33
AuthInfoResType auth_res_type = 4;
34
35
// 功能模块类型
36
enum ModuleType {
37
PLATFORM = 0; // 平台管理中心权限
38
BUSINESS = 1; // 企业管理权限
39
FINANCIAL = 2; // 金融管理权限
40
REPORT_FORM = 3; // 报表分析权限
41
USER_BEHAVIOR = 4; // 用户行为分析
42
REPORT_MANAGE = 5; // 报告管理权限
43
DEVICE = 6; // 设备管理权限
44
SYSTEM = 7; // 系统管理权限
45
}
46
ModuleType module_type = 5;
47
48
// 单权限类型
49
enum AuthType {
50
CAR_ACCOUNT = 0; // 台账
51
CAR_ACCOUNT_BTN_EXPORT = 1; // 台账按钮导出
52
CAR_ACCOUNT_LIST_OPERATION = 2; // 台账列表操作
53
CAR_ACCOUNT_LIST_INSTALL_TIME = 3; // 安装时间
54
CAR_ACCOUNT_LIST_STATE = 4; // 状态
55
CAR_ACCOUNT_LIST_CITY = 5; // 安装城市
56
CAR_ACCOUNT_LIST_MILEAGE = 6; // 里程
57
}
58
AuthType auth_type = 6;
59
60
// API提供的body
61
string data = 7;
62
}
63
64
// 数据返回
65
message AdminResponse {
66
string msg = 1;
67
string error = 2;
68
string data = 3;
69
}
自动生成代码
1 | python -m grpc_tools.protoc -I ./ --python_out=. --grpc_python_out=. admin.proto |
2 | |
3 | // xxxx_pb2.py包含我们生成的请求和响应类,xxxx_pb2_grpc.py并包含我们生成的客户端和服务器类 |
注意
1 | 1.proto3中默认参数是可选,不可进行显示的声明optional // proto2可以 |
2 | 2.proto3中不允许使用必需字段(required) // proto2可以 |
3 | 3.proto3中不允许显式声明默认值 // proto2可以 |