El tipo de Status
define un modelo de error lógico que es adecuado para diferentes entornos de programación, incluidas las API de REST y las API de RPC. Es utilizado por gRPC . El modelo de error está diseñado para ser:
- Fácil de usar y comprender para la mayoría de los usuarios
- Lo suficientemente flexible para satisfacer necesidades inesperadas
Descripción general
El mensaje de Status
contiene tres datos: código de error, mensaje de error y detalles del error. El código de error debe ser un valor de enumeración de google.rpc.Code
, pero puede aceptar códigos de error adicionales si es necesario. El mensaje de error debe ser un mensaje en inglés dirigido al desarrollador que ayude a los desarrolladores a comprender y resolver el error. Si se necesita un mensaje de error localizado para el usuario, coloque el mensaje localizado en los detalles del error o localícelo en el cliente. Los detalles opcionales del error pueden contener información arbitraria sobre el error. Existe un conjunto predefinido de tipos de detalles de error en el paquete google.rpc
que se puede usar para condiciones de error comunes.
Mapeo de idiomas
El mensaje de Status
es la representación lógica del modelo de error, pero no es necesariamente el formato de cable real. Cuando el mensaje de Status
se expone en diferentes bibliotecas de cliente y diferentes protocolos de conexión, se puede asignar de manera diferente. Por ejemplo, es probable que se asigne a algunas excepciones en Java, pero es más probable que se asigne a algunos códigos de error en C.
Otros usos
El modelo de error y el mensaje de Status
se pueden utilizar en una variedad de entornos, con o sin API, para proporcionar una experiencia de desarrollador coherente en diferentes entornos.
Los usos de ejemplo de este modelo de error incluyen:
Errores parciales. Si un servicio necesita devolver errores parciales al cliente, puede incrustar el
Status
en la respuesta normal para indicar los errores parciales.Errores de flujo de trabajo. Un flujo de trabajo típico tiene varios pasos. Cada paso puede tener un mensaje de
Status
para informar de errores.Operaciones por lotes. Si un cliente utiliza una solicitud por lotes y una respuesta por lotes, el mensaje de
Status
debe usarse directamente dentro de la respuesta por lotes, uno para cada respuesta secundaria de error.Operaciones asincrónicas. Si una llamada a la API incrusta una operación asincrónica en su respuesta, el estado de esas operaciones debe representarse directamente mediante el mensaje de
Status
.Inicio sesión. Si algunos errores de API se almacenan en registros, el mensaje
Status
podría usarse directamente después de cualquier eliminación necesaria por razones de seguridad / privacidad.
Representación JSON | |
---|---|
{ "code": number, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |
Campos | |
---|---|
code | El código de estado, que debe ser un valor de enumeración de |
message | Un mensaje de error dirigido al desarrollador, que debe estar en inglés. Cualquier mensaje de error de cara al usuario debe ser localizado y enviado en el campo |
details[] | Una lista de mensajes que contienen los detalles del error. Existe un conjunto común de tipos de mensajes que pueden utilizar las API. Un objeto que contiene campos de un tipo arbitrario. Un campo adicional |