ErrorDetail dans les détails du statut, et il dit ce qu’aurait répondu
POST /secure/send pour la même requête. Tout ce qui est écrit sur les erreurs
REST s’applique donc ici aussi — le code gRPC est la manière dont le transport le dit, et
ErrorDetail en est le détail.
Lire ErrorDetail
Il voyage dans le trailer de statut enrichi standard (grpc-status-details-bin). Lisez-le avec
l’utilitaire de votre bibliothèque :
Sur un
SendStream, le même
ErrorDetail arrive en ligne dans le champ error du résultat, à côté du code numérique.
Branchez sur
code, pas sur message. Le message est destiné à une personne qui lit un log et
peut être formulé différemment dans une version ultérieure ; les codes font partie du contrat figé.
Quand un retry aide, un google.rpc.RetryInfo standard est empaqueté à côté de ErrorDetail avec le
même délai, pour les bibliothèques clientes qui le respectent.
Envoi
Rien de refusé n’est débité, et rien de refusé ne compte dans votre limite de débit.
OUTCOME_UNKNOWN, réessayer uniquement avec client_ref
Pour la même raison, si vous configurez une politique de retry dans votre bibliothèque cliente (un
retryPolicy de service config gRPC), listez-y UNAVAILABLE et RESOURCE_EXHAUSTED et jamais
UNKNOWN.
Les sessions et l’API elle-même
UNAUTHENTICATED couvre trois situations différentes, donc lisez ErrorDetail.code : seul
SESSION_EXPIRED se règle en se reconnectant. Voir
Authentification et sessions.
Accusés
Un
Ack qui nomme un accusé déjà disparu n’est pas une erreur — il est compté dans
already_gone. Voir Accusés de livraison sur gRPC.
Voir aussi
Erreurs de l'API REST
Les mêmes refus, sous forme de statuts HTTP.
Gérer les erreurs
Construire pour l’accusé plutôt que pour la réponse.