protocol protobuffers protobuf google buffers array protocol-buffers grpc

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