Могу ли я определить вызов grpc с нулевым запросом или ответом?
синтаксис rpc в proto3 допускает нулевые запросы или ответы?
например, я хочу эквивалент следующего:
rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);
или я должен просто создать пустой тип?
message Null {};
rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
1 ответ:
комментарий Кентона ниже-это здравый совет:
... мы, как разработчики, очень плохо угадываем, что нам может понадобиться в будущем. Поэтому я рекомендую быть безопасным, всегда определяя пользовательские параметры и типы результатов для каждого метода, даже если они пусты.
отвечая на мой собственный вопрос:
просматривая файлы proto по умолчанию, я наткнулся на пустой это точно так же, как нулевой тип, который я предложил выше :)
выдержка из этого файла:
// 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 { }
Comments