protocol buffers - protobuffers - ¿Puedo definir una llamada grpc con una solicitud o respuesta nula?
protocol buffer list (2)
El comentario de Kenton a continuación es un buen consejo:
... nosotros como desarrolladores somos muy malos para adivinar lo que podríamos querer en el futuro. Por lo tanto, recomiendo estar seguro definiendo siempre parámetros personalizados y tipos de resultados para cada método, incluso si están vacíos.
Respondiendo mi propia pregunta:
Mirando a través de los archivos proto predeterminados, me encontré con Empty que es exactamente como el tipo nulo que sugerí anteriormente :)
extracto de ese archivo:
// 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 {
}
¿La sintaxis rpc en proto3 permite solicitudes o respuestas nulas?
Por ejemplo, quiero el equivalente de lo siguiente:
rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);
¿O debería crear un tipo nulo?
message Null {};
rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
También puede usar otra propiedad bool dentro de la estructura de respuesta. Me gusta esto
message Reply { string result = 1; bool found = 2; }
así que si no encuentra el resultado o si ocurrió algún error, puede regresar de la clase de servicio
return new Reply() { Found = false };