--Dans gRPC, les données sont échangées par sérialisation au format Protocol Buffers.
.proto et générer le code à l'aide de l'outil. Par conséquent, si ce fichier .proto peut être partagé par chaque client et serveur, il est possible de procéder au développement sans aucune divergence de spécifications.//Définition de version
syntax = "proto3";
//Définition du package
package sample;
// import
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
//Définition du service et de la méthode RPC
service SampleService {
    rpc Sample (SampleRequest) returns (SampleResponse);
    //Serveur de streaming RPC
    rpc SampleServerStreamMethod (SampleRequest) returns (stream SampleResponse);
    //Client streaming RPC
    rpc SampleClientStreamMethod (stream SampleRequest) returns (SampleResponse)
    //RPC de streaming bidirectionnel
    rpc SampleBidirectionalMethod (stream SampleRequest) returns (stream SampleResponse)
}
message SampleRequest {
    string name = 1;
}
message SampleResponse {
    Sample sample = 1;
}
//Type de message
//Le numéro à droite est le "numéro de tag"
message Sample {
    //Type scalaire
    //Il y a des nombres, des chaînes, des booléens, des tableaux d'octets
    int32 id = 1;
    string name = 2;
    bool isBool = 3;
    //obsolète Spécifiez les champs obsolètes et obsolètes
    string duplicated_field = 4 [deprecated = true]
    //identifiant réservé Numéro d'étiquette abandonnée
    reserved 7, 8, 10 to 12;
    //Liste (tableau)
    //Le tableau multidimensionnel ne peut pas être défini
    repeated SampleList sample_list = 5;
    //Carte (tableau associatif)
    map<string, string> sample_map = 6;
    //N'importe lequel de plusieurs
    oneof message {
        string one = 1;
        string other = 2;
    }
    // Well Known Types
    google.protobuf.Duration sample_duration = 9;
    google.protobuf.Timestamp create_time = 13;
    //Type d'énumération
    enum SampleEnum {
        UNKNOWN = 0;
        TEST1 = 1;
        TEST2 = 2;
        TEST3 = 3;
    }
}
syntax = "proto3";
package sample;
import
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
service SampleService {
    rpc Sample (SampleRequest) returns (SampleResponse);
    //Serveur streaming RPC
    rpc SampleServerStreamMethod (SampleRequest) returns (stream SampleResponse);
    //Client streaming RPC
    rpc SampleClientStreamMethod (stream SampleRequest) returns (SampleResponse);
    //RPC de streaming bidirectionnel
    rpc SampleBidirectionalMethod (stream SampleRequest) returns (stream SampleResponse);
}
| Type de données | Valeur par défaut | 
|---|---|
| string | Caractères vides | 
| bytes | Tableau vide | 
| bool | false | 
| Valeur numérique | 0 | 
| enum | La première valeur définie. Doit être 0 | 
| Type de message | Dépend de la mise en œuvre | 
| repeated | Tableau vide | 
--Type avec plusieurs champs --Numéro d'étiquette
message Sample {
    //Type scalaire
    //Il y a des nombres, des chaînes, des booléens, des tableaux d'octets
    int32 id = 1;
    string name = 2;
    bool isBool = 3;
    //obsolète Spécifiez les champs qui sont obsolètes et obsolètes
    string duplicated_field = 4 [deprecated = true]
    //identifiant réservé Numéro d'étiquette abandonnée
    reserved 7, 8, 10 to 12;
  //~ Omis ~
}
--Un tableau peut être défini en préfixant le type avec --Peut être utilisé pour le type scalaire et le type de message
    //Liste (tableau)
    //Le tableau multidimensionnel ne peut pas être défini
    repeated SampleList sample_list = 5;
    map<string, string> sample_map = 6;
    //Type d'énumération
    enum SampleEnum {
        UNKNOWN = 0;
        TEST1 = 1;
        TEST2 = 2;
        TEST3 = 3;
    }
oneof
 ou ʻautre    oneof message {
        string one = 1;
        string other = 2;
    }
Well Known Types --Type de message défini par Google
    google.protobuf.Duration sample_duration = 9;
    google.protobuf.Timestamp create_time = 13;
Recommended Posts