> Как сообщить клиенту о недоступности внешнего источника данных (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Wildberries

Стек: Go

> Пример ответа

В Go для уведомления клиента о недоступности внешнего источника данных используйте структурированные HTTP-ответы с соответствующим кодом состояния и информативным телом.

Пример реализации:

GO
func (h *Handler) GetData(w http.ResponseWriter, r *http.Request) {
data, err := h.externalService.Fetch(r.Context())
if err != nil {
// Логируем ошибку для внутреннего мониторинга
log.Printf("External service unavailable: %v", err)
// Возвращаем клиенту 503 Service Unavailable
w.WriteHeader(http.StatusServiceUnavailable)
json.NewEncoder(w).Encode(map[string]string{
"error": "external_source_unavailable",
"message": "Внешний источник данных временно недоступен. Пожалуйста, повторите запрос позже.",
"retry_after": "30", // рекомендуемое время ожидания в секундах
})
return
}
// успешная обработка
}

Ключевые моменты:

  • Используйте HTTP 503 (Service Unavailable) - стандартный код для временной недоступности.

  • Возвращайте структурированный JSON с полями error (машинный идентификатор) и message (человекочитаемое описание).

  • Добавьте заголовок Retry-After для указания времени повторной попытки.

  • Не раскрывайте детали внутренней инфраструктуры (например, IP или имя сервиса) - только общее сообщение.

  • Логируйте полную ошибку на сервере для отладки, но не передавайте её клиенту.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью