【gRPC】protoの例をメモしておく

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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です