Status

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

number

El código de estado, que debe ser un valor de enumeración de google.rpc.Code .

message

string

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 google.rpc.Status.details , o debe ser localizado por el cliente.

details[]

object

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 "@type" contiene un URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" } .