179

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);
4

3 に答える 3

244

以下のケントンのコメントは適切なアドバイスです。

... 私たち開発者は、将来何が必要になるかを推測するのが本当に苦手です。そのため、空であっても、常にすべてのメソッドに対してカスタム パラメータと結果の型を定義することで、安全を確保することをお勧めします。


私自身の質問に答える:

デフォルトの 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 {

}
于 2015-08-02T14:39:12.417 に答える