web-dev-qa-db-fra.com

Puis-je définir un appel grpc avec une requête ou une réponse null?

La syntaxe rpc de proto3 autorise-t-elle les requêtes ou les réponses nulles?

par exemple. Je veux l'équivalent de ce qui suit:

rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);

Ou devrais-je simplement créer un type null?

message Null {};

rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
86
Mark Kahn

Le commentaire de Kenton ci-dessous est un conseil judicieux:

... en tant que développeurs, nous ne savons vraiment pas ce que nous pourrions souhaiter à l'avenir. Il est donc recommandé de toujours définir des paramètres et des types de résultats personnalisés pour chaque méthode, même s'ils sont vides.


Répondant à ma propre question:

En parcourant les fichiers proto par défaut, je suis tombé sur Empty qui est exactement comme le type Null que j'ai suggéré ci-dessus :)

extrait de ce fichier:

// 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 {

}
117
Mark Kahn