60 行
1.4 KiB
Protocol Buffer
60 行
1.4 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package proto;
|
|
|
|
// 定义 Go 包名为 demo1, 生成的 Go 代码包名为 demo1
|
|
option go_package = "demo1/proto;proto";
|
|
|
|
import "google/protobuf/empty.proto";
|
|
import "google/protobuf/any.proto";
|
|
|
|
enum Sex {
|
|
Male = 0;
|
|
Female = 1;
|
|
Unknown = 2;
|
|
}
|
|
|
|
message Code {
|
|
string code = 1;
|
|
}
|
|
|
|
// 定义 LoginRequest 消息, 包含 username, password 两个字段
|
|
message LoginRequest {
|
|
string username = 1;
|
|
string password = 2;
|
|
google.protobuf.Any other = 3;
|
|
}
|
|
|
|
// 定义 RegisterRequest 消息, 包含 username, password, email, mobile 四个字段
|
|
message RegisterRequest {
|
|
string username = 1;
|
|
string password = 2;
|
|
string email = 3;
|
|
string mobile = 4;
|
|
Sex sex = 5;
|
|
repeated string hobbies = 6;
|
|
// 以下字段为预留字段, 不参与序列化和反序列化
|
|
reserved "city", "money";
|
|
}
|
|
|
|
// 定义 Response 消息, 包含 code, msg, data 三个字段
|
|
// 其中 data 字段使用 oneof 关键字, 表示 data 字段只能有一个字段被赋值
|
|
message Response {
|
|
int32 code = 1;
|
|
string msg = 2;
|
|
oneof data {
|
|
string token = 3;
|
|
string message = 4;
|
|
}
|
|
map<string, string> info = 5;
|
|
}
|
|
|
|
// 定义 User 服务
|
|
service User {
|
|
// 登录服务
|
|
rpc Login(LoginRequest) returns (Response);
|
|
// 注册服务
|
|
rpc Register(RegisterRequest) returns (Response);
|
|
// 获取用户信息服务
|
|
rpc GetUserInfo(google.protobuf.Empty) returns (Response);
|
|
} |