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.
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 veldRetryInfo— wanneer opnieuw proberenQuotaFailure— limiet overschredenErrorInfo— 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 formuliervalidatie.
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.reasonstabiel en gedocumenteerd - Combineer
RetryInfomet 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.Statusbevat code, message en herhaalde detailgegevens alsAny-gegevensladingen- Standaardtypen zijn
BadRequest,RetryInfo,QuotaFailureenErrorInfo - Maak details met
WithDetailsen lees ze met een typewissel overDetails() - Details worden doorgegeven in de trailer
grpc-status-details-bin - Standaardtypen zorgen voor consistentie tussen talen
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
- Statuscodes en foutafhandeling
- Aangepaste metadata verzenden
- Context en deadlines
- Uitgebreide foutmodellen met google.rpc.Status