proto3 の rpc 構文では null 要求または応答が許可されますか?
例えば、次のようなものが欲しいです:
rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);
それとも null 型を作成するだけでよいでしょうか?
message Null {};
rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
ベストアンサー1
ケントン氏の以下のコメントは有益なアドバイスです。
... 開発者として、私たちは将来何が必要になるかを推測するのが本当に苦手です。そのため、安全のために、たとえ空であっても、すべてのメソッドに対してカスタム パラメータと結果の型を常に定義することをお勧めします。
私自身の質問に答えます:
デフォルトの proto ファイルを調べていたところ、上で提案した Null 型とまったく同じEmptyを見つけました:)
そのファイルからの抜粋:
// A generic empty message that you can re-use to avoid defining duplicated
// empty messages in your APIs. A typical example is to use it as the request
// or the response type of an API method. For instance:
//
// service Foo {
// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
// }
//
message Empty {
}