gRPC en API's met hoge prestaties · Les

Protobuf-schemadefinitie

Leer berichten en services te definiëren met de syntax van Protocol Buffers (Protobuf) voor sterke typering.

Les 1 van 411 stappen

Protobuf-schemadefinitie is een gratis gRPC en API's met hoge prestaties-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject gRPC en API's met hoge prestaties. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus gRPC en API's met hoge prestaties bevat in totaal 4 lessen.

Wat zijn Protocol Buffers?

Welkom! In deze les duiken we in Protocol Buffers, vaak Protobuf genoemd. Het is een belangrijke technologie voor gRPC.

  • Protobuf is een taal- en platformonafhankelijk, uitbreidbaar mechanisme voor het serialiseren van gestructureerde gegevens. Zie het als een zeer efficiënte manier om gegevens te definiëren en uit te wisselen.
  • Het lijkt op JSON of XML, maar is kleiner, sneller en eenvoudiger.
  • gRPC gebruikt Protobuf om de service-interface en de structuur van de payloadberichten te definiëren.

Het bestand .proto

Protobuf-schema's worden gedefinieerd in speciale bestanden die eindigen op de extensie .proto. Deze bestanden fungeren als contracten voor je gegevens.

  • Elk .proto-bestand begint met een syntaxisdeclaratie, meestal syntax = "proto3";. Hiermee vertel je de Protobuf-compiler welke versie van de syntaxis moet worden gebruikt.
  • Dit is essentieel voor compatibiliteit met toekomstige en eerdere versies.
syntax = "proto3";

// Your Protobuf definitions go here

Je eerste bericht definiëren

In Protobuf is een message een gestructureerd informatierecord. Het lijkt op een klasse in objectgeoriënteerd programmeren of op een struct in C.

Je definieert een bericht met het sleutelwoord message, gevolgd door de naam en een body met de velden.

syntax = "proto3";

message MyMessage {
  // fields will go here
}

Velden, typen en nummers

In een bericht definieer je velden, elk met een specifiek gegevenstype en een uniek veldnummer.

  • Gegevenstype: bepaalt het type gegevens, bijvoorbeeld string, int32 en bool.
  • Veldnaam: een unieke identificatie voor het veld binnen het bericht.
  • Veldnummer: een unieke, positieve gehele tag (van 1 tot 229-1). Deze nummers zijn essentieel om velden in de binaire indeling te herkennen en moeten voor compatibiliteit stabiel blijven.

Veelgebruikte scalaire gegevenstypen

Protobuf ondersteunt verschillende scalaire gegevenstypen. Dit zijn enkele van de meest voorkomende:

  • int32, int64: gehele getallen.
  • float, double: getallen met drijvende komma.
  • bool: Booleaanse waarde (waar/onwaar).
  • string: tekst gecodeerd in UTF-8.
  • bytes: onbewerkte reeksen bytes.

Kies het type dat het beste bij je gegevens past om opslag en overdracht te optimaliseren.

Voorbeeld: een eenvoudig Person-bericht

Laten we een Person-bericht definiëren met enkele veelvoorkomende velden. Let op de unieke veldnummers die aan elk veld zijn toegewezen.

Deze nummers zijn als unieke ID's voor je gegevensonderdelen. Als je de naam van een veld wijzigt, moet het nummer hetzelfde blijven zodat oudere systemen het kunnen begrijpen.

syntax = "proto3";

message Person {
  string name = 1;
  int32 age = 2;
  bool is_active = 3;
}

Enumwaarden gebruiken voor vaste keuzes

Soms moet een veld een waarde uit een vooraf bepaalde lijst met opties hebben. Dan komen enums goed van pas.

  • Enums definiëren een verzameling benoemde gehele constanten.
  • De eerste waarde in een enum moet 0 zijn, omdat dit de standaardwaarde is wanneer een veld niet is ingesteld.
syntax = "proto3";

enum UserRole {
  GUEST = 0;
  MEMBER = 1;
  ADMIN = 2;
}

Voorbeeld: een User-bericht met een rol

We maken nu een User-bericht en voegen onze UserRole-enum toe als veld. Zo kan de rol van de gebruiker alleen een van de gedefinieerde waarden zijn.

Dit zorgt voor sterke typering en voorkomt dat ongeldige gegevens worden verzonden.

syntax = "proto3";

enum UserRole {
  GUEST = 0;
  MEMBER = 1;
  ADMIN = 2;
}

message User {
  string id = 1;
  string username = 2;
  UserRole role = 3;
}

Berichten nesten voor structuur

Voor complexere gegevens kun je berichten nesten binnen andere berichten. Dit helpt je schema te organiseren en hiërarchische gegevens op een natuurlijke manier weer te geven.

Zie het als een object binnen een ander object in programmeertalen.

syntax = "proto3";

message UserProfile {
  string email = 1;
  message Address {
    string street = 1;
    string city = 2;
    string zip_code = 3;
  }
  Address home_address = 2;
}

Korte controle: de basis van Protobuf

Bekijk de volgende definitie van een Protobuf-bericht:

syntax = "proto3";

message Product {
  string name = 1;
  int32 price_cents = 2;
  bool in_stock = 3;
  enum ProductCategory {
    ELECTRONICS = 0;
    BOOKS = 1;
    CLOTHING = 2;
  }
  ProductCategory category = 4;
}

Samenvatting: Protobuf-schema

Goed gedaan! Je hebt de basis geleerd van het definiëren van Protobuf-schema's:

  • .proto-bestanden: het contract voor je gegevens.
  • Berichten: definities van gestructureerde gegevens, vergelijkbaar met klassen.
  • Velden: elk veld heeft een type, naam en uniek veldnummer.
  • Scalaire typen: veelvoorkomende typen zoals string, int32 en bool.
  • Enums: voor vooraf bepaalde verzamelingen waarden, beginnend met 0.
  • Nesten: complexe gegevens organiseren door berichten in te sluiten.

Hierna bekijken we hoe je deze definities omzet in code!

Gratis beginnen

Leer gRPC en API's met hoge prestaties met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Protobuf-schemadefinitie” gratis?

Ja — de volledige tekst van “Protobuf-schemadefinitie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus gRPC en API's met hoge prestaties wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus gRPC en API's met hoge prestaties bevat in totaal 4 lessen.

Wat leer ik in “Protobuf-schemadefinitie”?

Leer berichten en services te definiëren met de syntax van Protocol Buffers (Protobuf) voor sterke typering. Je oefent met gRPC en API's met hoge prestaties door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met gRPC en API's met hoge prestaties te beginnen?

Ervaring vooraf is niet nodig. gRPC en API's met hoge prestaties op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Protobuf-schemadefinitie”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over gRPC en API's met hoge prestaties?

Ja. Elke les over gRPC en API's met hoge prestaties bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Protobuf-schemadefinitie
  2. gRPC-code genereren
  3. Eenvoudige unaray gRPC-service
  4. Streaming-RPC's: server, client en bidirectioneel
← Terug naar gRPC en API's met hoge prestaties