Как gRPC работает со статусами ответов

«Как gRPC работает со статусами ответов» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

gRPC использует стандартные HTTP/2 статусы, но также предоставляет собственные коды статусов для более точного описания ошибок. Основные статусы:

  • OK (0) - успешное выполнение
  • Cancelled (1) - операция отменена
  • InvalidArgument (3) - неверные параметры
  • NotFound (5) - ресурс не найден
  • Internal (13) - внутренняя ошибка сервера

Пример обработки в Go:

if err != nil {
    if status.Code(err) == codes.NotFound {
        log.Println("Запрашиваемый ресурс не найден")
    } else {
        log.Printf("Ошибка: %v", err)
    }
}

Статусы передаются в метаданных и могут содержать дополнительное описание ошибки. Клиент может анализировать эти статусы для корректной обработки ошибок.