protocol protobuffers protobuf buffers array protocol-buffers protorpc

protocol buffers - protobuffers - Método del servicio Protobuf RPC sin parámetros



protocol buffers array (2)

Puede especificar google.protobuf.Empty lugar de su propio mensaje vacío. Ejemplo:

rpc WhoAreYou(google.protobuf.Empty) returns (Whoami) { }

No te olvides de importar el archivo proto apropiado:

import "google/protobuf/empty.proto";

Estoy tratando de describir un servicio RPC utilizando los búferes de protocolo de Google

service WhoamiService { rpc WhoAreYou() returns (Whoami) {} } message Whoami { optional bytes request_id = 1; optional string hostname = 2; optional string message = 3; }

Cuando intento compilar esta definición, WhoAreYou() un error. Expected type name apunta a la pieza WhoAreYou() .

Funciona bien si sustituyo WhoAreYou() por WhoAreYou(Whoami) , pero en este caso, el método no necesita ningún parámetro. ¿Hay alguna forma de hacerlo o simplemente no se admite?


Tienes que especificar un tipo de entrada. Si no desea que el método tome parámetros, defina un tipo de mensaje vacío, como:

message WhoAreYouParams {}

La razón por la que se requiere esto es para que si luego necesita agregar un parámetro opcional, puede hacerlo sin romper el código existente.