作用
就是一个接口协议,但是根据这个协议,google工具会自动生成一些代码。
1 基本知识
1.1 关键字段说明
# Student.proto
## 声明包名称
package com.Student;
## 声明消息类型,其实就是数据接口, 后面 = 1 这些是强制要求的编号,每个消息类型里面的字段都不能一样
message Data1 {
string name = 1;
int32 sex = 2;
}
# Desk.proto
package com.Desk;
message Data2 {
int32 price = 1;
}
# Class.proto
## 引入了两个包,主要是会用到引入包的消息类型
import '../Student.protp'
import '../Desk.protp'
package com.Class;
## 声明消息类型,将Student与Desk的消息类型组合成一个新的消息类型。
message Data1 {
Student.Data1 student = 1;
Desk.Data2 desk = 2;
}
## 声明返回的消息类型,其中repeated字段就是声明数组
message Rep {
repeated Data1 = 1;
string teacher = 2;
}
message Req {
uint32 year = 1;
uint32 class = 2;
}
## 声明调用接口的方式、参入的参数、返回的参数
## 这个接口对应请求的URL格式为: /pacage声明的名字.service声明的名字/rpc声明的名字
## 就是这个: /com.Class.BigClass/getClass
service BigClass {
rpc getClass(Req) returns(Rep)
}