Status

O Status tipo define um modelo de erro lógico que é adequado para diferentes ambientes de programação, incluindo APIs REST e APIs RPC. Ele é usado por gRPC . O modelo de erro é projetado para ser:

  • Simples de usar e entender para a maioria dos usuários
  • Flexível o suficiente para atender a necessidades inesperadas

Visão geral

O Status mensagem contém três partes de dados: Código de erro, mensagem de erro e detalhes do erro. O código de erro deve ser um valor de enumeração de google.rpc.Code , mas pode aceitar códigos de erro adicionais, se necessário. A mensagem de erro deve ser uma mensagem de Inglês voltado para o desenvolvedor que ajuda os desenvolvedores a entender e resolver o erro. Se uma mensagem de erro localizada para o usuário for necessária, coloque a mensagem localizada nos detalhes do erro ou localize-a no cliente. Os detalhes opcionais do erro podem conter informações arbitrárias sobre o erro. Há um conjunto predefinido de detalhe erro tipos no pacote google.rpc que podem ser usados para condições de erro comuns.

Mapeamento de linguagem

O Status mensagem é a representação lógica do modelo de erro, mas não é necessariamente o formato de fio real. Quando o Status mensagem é exposto em diferentes bibliotecas de cliente e os diferentes protocolos de arame, que pode ser mapeada de forma diferente. Por exemplo, provavelmente será mapeado para algumas exceções em Java, mas mais provavelmente mapeado para alguns códigos de erro em C.

Outros usos

O modelo de erro eo Status mensagem pode ser usado em uma variedade de ambientes, com ou sem APIs, para fornecer uma experiência do desenvolvedor consistente em diferentes ambientes.

Os exemplos de uso deste modelo de erro incluem:

  • Erros parciais. Se um serviço precisa retornar erros parciais para o cliente, pode incorporar o Status na resposta normal para indicar os erros parciais.

  • Erros de fluxo de trabalho. Um fluxo de trabalho típico tem várias etapas. Cada etapa pode ter um Status de mensagem para o relatório de erros.

  • Operações em lote. Se um cliente usa solicitação de lote e resposta lote, o Status de mensagem deve ser usado diretamente dentro resposta lote, um para cada sub-resposta de erro.

  • Operações assíncronas. Se uma chamada de API incorpora resultados da operação assíncronas em sua resposta, o status dessas operações deve ser representada directamente usando o Status mensagem.

  • Exploração madeireira. Se alguns erros de API são armazenados nos logs, a mensagem Status pode ser usado diretamente após qualquer decapagem necessária por razões de segurança / privacidade.

Representação JSON
{
  "code": number,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Campos
code

number

O código de status, que deve ser um valor de enumeração de google.rpc.Code .

message

string

Uma mensagem de erro voltada para o desenvolvedor, que deve estar em inglês. Qualquer mensagem de erro voltados para o usuário deve ser localizada e enviada no google.rpc.Status.details campo, ou localizada pelo cliente.

details[]

object

Uma lista de mensagens que contêm os detalhes do erro. Há um conjunto comum de tipos de mensagens para uso das APIs.

Um objeto que contém campos de um tipo arbitrário. Um campo adicional "@type" contém um URI identificar o tipo. Exemplo: { "id": 1234, "@type": "types.example.com/standard/id" } .