[GO] Zusammenfassung zum Schreiben von in gRPC verwendeten .proto-Dateien

Ganze Probe

//Versionsdefinition
syntax = "proto3";

//Paketdefinition
package sample;

// import
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";

//Service- und RPC-Methodendefinition
service SampleService {
    rpc Sample (SampleRequest) returns (SampleResponse);

    //Server-Streaming-RPC
    rpc SampleServerStreamMethod (SampleRequest) returns (stream SampleResponse);

    //Client-Streaming-RPC
    rpc SampleClientStreamMethod (stream SampleRequest) returns (SampleResponse)

    //Bidirektionales Streaming von RPC
    rpc SampleBidirectionalMethod (stream SampleRequest) returns (stream SampleResponse)
}

message SampleRequest {
    string name = 1;
}

message SampleResponse {
    Sample sample = 1;
}


//Nachrichtentyp
//Die Nummer rechts ist die "Tag-Nummer"
message Sample {
    //Skalartyp
    //Es gibt Zahlen, Zeichenfolgen, Boolesche Werte und Byte-Arrays
    int32 id = 1;
    string name = 2;
    bool isBool = 3;

    //veraltet Geben Sie Felder an, die veraltet und veraltet sind
    string duplicated_field = 4 [deprecated = true]

    //reservierte Kennung Nicht mehr verfügbare Tag-Nummer
    reserved 7, 8, 10 to 12;

    //Liste (Array)
    //Mehrdimensionales Array kann nicht definiert werden
    repeated SampleList sample_list = 5;

    //Karte (assoziatives Array)
    map<string, string> sample_map = 6;

    //Jeder aus mehreren
    oneof message {
        string one = 1;
        string other = 2;
    }

    // Well Known Types
    google.protobuf.Duration sample_duration = 9;
    google.protobuf.Timestamp create_time = 13;

    //Aufzählungstyp
    enum SampleEnum {
        UNKNOWN = 0;
        TEST1 = 1;
        TEST2 = 2;
        TEST3 = 3;
    }

}

Versionsdefinition

syntax = "proto3";

Paketdefinition

package sample;

import

import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";

Dienste und RPC-Methoden

--API-Definitionskörper

service SampleService {
    rpc Sample (SampleRequest) returns (SampleResponse);

    //Server-Streaming-RPC
    rpc SampleServerStreamMethod (SampleRequest) returns (stream SampleResponse);

    //Client-Streaming-RPC
    rpc SampleClientStreamMethod (stream SampleRequest) returns (SampleResponse);

    //Bidirektionales Streaming von RPC
    rpc SampleBidirectionalMethod (stream SampleRequest) returns (stream SampleResponse);
}

Skalartyp

--Numerischer Wert, Zeichenfolge, Boolescher Wert, Byte-Array sind Datentypen

Datentyp Standardwert
string Leerer Charakter
bytes Leeres Array
bool false
Numerischer Wert 0
enum Der erste definierte Wert. Muss 0 sein
Nachrichtentyp Implementierung abhängig
repeated Leeres Array

Nachrichtentyp

--Typ mit mehreren Feldern --Tag Nummer

message Sample {
    //Skalartyp
    //Es gibt Zahlen, Zeichenfolgen, Boolesche Werte und Byte-Arrays
    int32 id = 1;
    string name = 2;
    bool isBool = 3;

    //veraltet Geben Sie Felder an, die veraltet und veraltet sind
    string duplicated_field = 4 [deprecated = true]

    //reservierte Kennung Nicht mehr verfügbare Tag-Nummer
    reserved 7, 8, 10 to 12;

  //~ Ausgelassen ~
}

Liste (Array)

    //Liste (Array)
    //Mehrdimensionales Array kann nicht definiert werden
    repeated SampleList sample_list = 5;

Karte (assoziatives Array)

    map<string, string> sample_map = 6;

Aufzählungstyp

    //Aufzählungstyp
    enum SampleEnum {
        UNKNOWN = 0;
        TEST1 = 1;
        TEST2 = 2;
        TEST3 = 3;
    }

oneof

    oneof message {
        string one = 1;
        string other = 2;
    }

Well Known Types

    google.protobuf.Duration sample_duration = 9;
    google.protobuf.Timestamp create_time = 13;

Codegenerierung

Referenz

Recommended Posts

Zusammenfassung zum Schreiben von in gRPC verwendeten .proto-Dateien
Zusammenfassung zum Importieren von Dateien in Python 3
Zusammenfassung des Schreibens von AWS Lambda
Zusammenfassung der Verwendung von MNIST mit Python
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Wie man nüchtern mit Pandas schreibt
Zusammenfassung der Verwendung von pyenv-virtualenv
Zusammenfassung der Verwendung von csvkit
So zeigen Sie eine bestimmte Dateispalte unter Linux an (awk)
[Python] Zusammenfassung der Verwendung von Pandas
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Zusammenfassung der häufig verwendeten Befehle in matplotlib
[Python2.7] Zusammenfassung der Verwendung von unittest
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Lesen von CSV-Dateien mit Pandas
Wie schreibe ich diesen Prozess in Perl?
Wie schreibe ich Ruby to_s in Python
Zusammenfassung dessen, was bei 100 Pandas-Schlägen verwendet wurde (# 1 ~ # 32)
Zusammenfassung der in Command Line Vol.8 verwendeten Tools
Zusammenfassung der in Command Line Vol.5 verwendeten Tools
So überprüfen / extrahieren Sie Dateien im RPM-Paket
So erhalten Sie die Dateien im Ordner [Python]
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So finden Sie heraus, welche Art von Datei in S3 in Python gespeichert ist
So schreiben Sie eine Datei, bei der Sie in allen Sprachen vorsichtig sein sollten
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
20. Offline-Echtzeit So schreiben Sie Probleme in Python
[Blender] Zusammenfassung der Installation / Aktualisierung / Deinstallation von Add-Ons
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
So laden Sie Dateien in Google Drive mit Google Colaboratory
So zeigen Sie mehrere Bilder einer Galaxie in Kacheln an
Verwendung von Variablen in systemd Unit-Definitionsdateien
So laden Sie Dateien von Selenium of Python in Chrome herunter
So fügen Sie einer PDF-Datei Seitenzahlen hinzu (in Python)
Hochladen von Dateien in der generischen Klassenansicht von Django
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
So verweisen Sie auf statische Dateien in einem Django-Projekt
Zusammenfassung, wie der Status mit mehreren Funktionen geteilt wird
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
So finden Sie die optimale Anzahl von Clustern für k-means
So entfernen Sie benutzerdefinierte Serverpiktogramme in message.content
Offline-Echtzeit zum Schreiben eines E14 Python-Implementierungsbeispiels
[Python] Zusammenfassung zum Abrufen von Listen und Wörterbuchelementen
[Von Zeit zu Zeit aktualisiert] Zusammenfassung der Entwurfsmuster in Java
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
So aktivieren Sie das Lesen / Schreiben von net.Conn mit golang, um mit dem Kontext abzubrechen
[Linux] [C / C ++] Zusammenfassung, wie man pid, ppid, tid bekommt
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Wie man in Python entwickelt
So erhalten Sie einen Überblick über Ihre Daten in Pandas
Ein Befehl zum Auflisten aller Dateien in der Reihenfolge des Dateinamens
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Zusammenfassung von Kapitel 2 der Einführung in Entwurfsmuster, die in Java gelernt wurden
So bestimmen Sie die Existenz eines Selenelements in Python
[Hugo] Zusammenfassung zum Hinzufügen von Seiten zu der mit Learn erstellten Site