gRPC en API's met hoge prestaties · Les

Uitgebreide foutmodellen met google.rpc.Status

Ga verder dan eenvoudige statuscodes door gestructureerde, machineleesbare foutdetails toe te voegen met het model google.rpc.Status en standaardtypen voor foutdetails.

Les 4 van 413 stappen

Uitgebreide foutmodellen met google.rpc.Status is een gratis gRPC en API's met hoge prestaties-les op CoddyKit. Dit is les 4 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.

Beperkingen van eenvoudige statuscodes

Een losse statuscode met een bericht vertelt de client dat er iets is mislukt, maar niet de gestructureerde reden daarvoor. Clients hebben vaak validatiefouten per veld, aanwijzingen voor opnieuw proberen of informatie over quota nodig.

Het uitgebreide foutenmodel voegt gestructureerde details toe aan een status.

Het google.rpc.Status-bericht

Het kerntype is google.rpc.Status met drie velden:

  • code: een numerieke statuscode
  • message: tekst voor ontwikkelaars
  • details: een herhaalde lijst met Any-gegevensladingen

Standaardtypen voor details

Google definieert herbruikbare detailberichten in google/rpc/error_details.proto:

  • BadRequest — overtredingen per veld
  • RetryInfo — wanneer opnieuw proberen
  • QuotaFailure — limiet overschreden
  • ErrorInfo — voor machines leesbare reden

BadRequest voor validatie

BadRequest bevat een lijst met FieldViolation-items. Elk item noemt een onjuist veld en beschrijft het probleem. Dit is ideaal voor antwoorden op formulier­validatie.

Een uitgebreide fout maken in Go

Met het pakket status kun je een status maken en getypeerde details toevoegen met WithDetails.

st := status.New(codes.InvalidArgument, 'invalid request')
v := &errdetails.BadRequest_FieldViolation{
  Field: 'email', Description: 'must be a valid address',
}
br := &errdetails.BadRequest{FieldViolations: []*errdetails.BadRequest_FieldViolation{v}}
st, _ = st.WithDetails(br)
return st.Err()

RetryInfo voor aanwijzingen over wachttijd

Voeg bij tijdelijke fouten RetryInfo toe met een retry_delay. Een goed werkende client leest dit en wacht voordat die het opnieuw probeert.

ri := &errdetails.RetryInfo{RetryDelay: durationpb.New(2 * time.Second)}
st, _ = status.New(codes.Unavailable, 'busy').WithDetails(ri)

ErrorInfo voor stabiele redenen

ErrorInfo geeft een stabiele tekenreeks in reason, een domain en metagegevens. In tegenstelling tot vrije tekst kunnen clients hier betrouwbaar op vertakken.

ei := &errdetails.ErrorInfo{
  Reason: 'EMAIL_TAKEN', Domain: 'auth.example.com',
}

Details aan de clientzijde lezen

De client zet de teruggegeven fout weer om in een status en onderzoekt elk detail met een typewissel.

st := status.Convert(err)
for _, d := range st.Details() {
  switch t := d.(type) {
  case *errdetails.BadRequest:
    handleFieldErrors(t)
  case *errdetails.RetryInfo:
    waitThenRetry(t.RetryDelay)
  }
}

Hoe details worden doorgegeven

Details worden als een binair Status-protobuf geserialiseerd in de trailer grpc-status-details-bin. Talen met bibliotheken voor uitgebreide fouten decoderen dit automatisch.

Aanbevolen werkwijzen

Gebruik het uitgebreide model verstandig:

  • Geef de voorkeur aan standaard detailtypen voor uitwisselbaarheid
  • Laat nooit geheimen uitlekken in berichten of details
  • Houd de waarden van ErrorInfo.reason stabiel en gedocumenteerd
  • Combineer RetryInfo met codes waarvoor opnieuw proberen echt zinvol is

Uitwisseling tussen talen

Omdat het model in protobuf is gedefinieerd, kan een Go-server een BadRequest versturen die een Java- of Python-client identiek decodeert. Die consistentie is precies het doel van de standaardtypen.

Korte controle

Toets je kennis van uitgebreide fouten.

Samenvatting

Je hebt het uitgebreide foutenmodel geleerd:

  • google.rpc.Status bevat code, message en herhaalde detailgegevens als Any-gegevensladingen
  • Standaardtypen zijn BadRequest, RetryInfo, QuotaFailure en ErrorInfo
  • Maak details met WithDetails en lees ze met een typewissel over Details()
  • Details worden doorgegeven in de trailer grpc-status-details-bin
  • Standaardtypen zorgen voor consistentie tussen talen
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 “Uitgebreide foutmodellen met google.rpc.Status” gratis?

Ja — de volledige tekst van “Uitgebreide foutmodellen met google.rpc.Status” 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 “Uitgebreide foutmodellen met google.rpc.Status”?

Ga verder dan eenvoudige statuscodes door gestructureerde, machineleesbare foutdetails toe te voegen met het model google.rpc.Status en standaardtypen voor foutdetails. 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 4 van 4.

Hoe lang duurt de les “Uitgebreide foutmodellen met google.rpc.Status”?

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. Statuscodes en foutafhandeling
  2. Aangepaste metadata verzenden
  3. Context en deadlines
  4. Uitgebreide foutmodellen met google.rpc.Status
← Terug naar gRPC en API's met hoge prestaties