gRPCのprotoファイルをいくつか書いたのでメモまでに。
通信方式は全てServer Streaming RPCです。
スポンサードサーチ
例1
ユーザー情報を返すAPI
id指定でidに一致したユーザー情報が返ってくるもの。
{
"id": 1,
"name": "太郎"
}
syntax = "proto3";
package users;
service users {
rpc GetUserInfo (GetUserInfoRequest) returns (stream GetUserInfoResponse) {};
}
message GetUserInfoRequest {
int32 id = 1;
}
message GetUserInfoResponse {
int32 id = 1
string name = 2;
}
例2
ユーザー一覧を返すAPI
nameで検索できるものとする。
{
"users": [
{
"id": 1,
"name": "太郎"
},
{
"id": 2,
"name": "次郎"
},
......,
]
}
syntax = "proto3";
package users;
service users {
rpc GetUsers (GetUsersRequest) returns (stream GetUsersResponse) {};
}
message GetUsersRequest {
string name = 1;
}
message GetUsersResponse {
message Users {
int32 id = 1
string name = 2;
}
repeated Users users = 1;
}
例3
グループ情報
所属するユーザー一覧が紐づく。
所属するユーザーがいなければ空。
{
"groups" : [
{
"groupName": "A",
"users": [
{
"id": 1,
"name": "太郎"
},
{
"id": 2,
"name": "次郎"
}
]
},
{
"groupName": "B",
"users": []
},
......,
]
}
syntax = "proto3";
package groups;
service users {
rpc GetGroups (GetGroupsRequest) returns (stream GetGroupsResponse) {};
}
message GetGroupsRequest {
string groupName = 1;
}
message GetGroupsResponse {
message Groups {
message Users {
int32 id = 1
string name = 2;
}
string groupName = 1
repeated Users users = 2;
}
repeated Groups groups = 1;
}