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