Oneof, maps og velkjente typer
Modeller fleksible data i utvikling med protobuf-feltene oneof, maps og standardiserte velkjente typer som Timestamp, Duration og Any.
Oneof, maps og velkjente typer er en gratis leksjon i gRPC og høyytelses-API-er på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i gRPC og høyytelses-API-er, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.
Utover enkle skalarfelt
Reelle skjemaer trenger mer enn strenger og heltall: gjensidig utelukkende valg, samlinger av nøkler og verdier samt standardiserte dato- og tidstyper. Protobuf tilbyr oneof, maps og well-known types.
Konstruksjonen oneof
En oneof grupperer felt der høyst ett kan være angitt om gangen. Når ett felt angis, tømmes de andre, og bare det aktive feltet sendes over ledningen.
message Contact {
oneof method {
string email = 1;
string phone = 2;
}
}Lese en oneof
Generert kode gir en måte å kontrollere hvilket alternativ som er angitt, vanligvis en case-enum eller en tilgangsmetode, slik at du kan forgrene basert på det aktive feltet.
switch c.Method.(type) {
case *Contact_Email: useEmail(c.GetEmail())
case *Contact_Phone: usePhone(c.GetPhone())
}Map-felt
En map lagrer par med nøkler og verdier. Nøkler må være skalarer (string/int), mens verdier kan ha hvilken som helst type bortsett fra en annen map.
message Config {
map<string, string> settings = 1;
}Slik fungerer maps over ledningen
Maps er syntaktisk forenkling av en repeated-melding med oppføringer av nøkler og verdier. Rekkefølgen er ikke garantert, og ved dupliserte nøkler beholdes den siste verdien — noe som er viktig når skjemaer videreutvikles.
Velkjente typer
Protobuf leveres med standardtyper i google/protobuf/:
Timestamp— et tidspunktDuration— en tidslengdeAny— en pakket vilkårlig meldingStruct— dynamiske JSON-lignende data
Timestamp og Duration
Foretrekk disse fremfor rå heltall i sekunder for bedre tydelighet og støtte i verktøy. De oversettes til opprinnelige tidstyper i de fleste språk.
import 'google/protobuf/timestamp.proto';
message Event {
google.protobuf.Timestamp created_at = 1;
}Bruke Any
Any pakker inn en hvilken som helst melding sammen med en type-URL, slik at du kan overføre heterogene nyttelaster. Den avanserte feilmodellen og refleksjon bruker begge denne typen.
import 'google/protobuf/any.proto';
message Envelope {
google.protobuf.Any payload = 1;
}FieldMask for delvise oppdateringer
FieldMask angir hvilke felt en forespørsel berører, slik at delvise oppdateringer (PATCH-stil) kan utføres uten uklarhet mellom manglende og standardiserte verdier.
// paths: ['name', 'email']Wrapper-typer for nullabilitet
Proto3-skalarer kan ikke skille mellom en verdi som ikke er angitt, og nullverdien. Wrapper-typer som Int32Value og StringValue legger til eksplisitt nullabilitet når du trenger det.
Tips for videreutvikling
Når du videreutvikler disse konstruksjonene:
- Legg trygt til nye felt i en
oneof; ikke bruk tag-numre på nytt - For maps bør du unngå å endre verditypen
- Velkjente typer er stabile; foretrekk dem fremfor egenutviklede ekvivalenter
Kort sjekk
Test kunnskapene dine om avansert protobuf.
Oppsummering
Du har lært om avanserte protobuf-konstruksjoner:
oneofmodellerer gjensidig utelukkende feltmaplagrer par med nøkler og verdier (en forenkling av repeated-oppføringer)- Velkjente typer:
Timestamp,Duration,Any,Struct FieldMaskmuliggjør delvise oppdateringer; wrapper-typer legger til nullabilitet- Videreutvikle forsiktig uten å bruke tag-numre på nytt
Lær deg gRPC og høyytelses-API-er med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Oneof, maps og velkjente typer» gratis?
Ja – hele teksten i «Oneof, maps og velkjente typer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av gRPC og høyytelses-API-er-kurset, kan du oppgradere til CoddyKit PRO. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.
Hva lærer jeg i «Oneof, maps og velkjente typer»?
Modeller fleksible data i utvikling med protobuf-feltene oneof, maps og standardiserte velkjente typer som Timestamp, Duration og Any. Du øver på gRPC og høyytelses-API-er med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med gRPC og høyytelses-API-er?
Ingen tidligere erfaring er nødvendig. gRPC og høyytelses-API-er på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Oneof, maps og velkjente typer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne gRPC og høyytelses-API-er-leksjonen?
Ja. Alle gRPC og høyytelses-API-er-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Anbefalte fremgangsmåter for Protobuf
- Strategier for skjemautvikling
- Egendefinerte Protobuf-alternativer
- Oneof, maps og velkjente typer