> Как сообщить клиенту о недоступности внешнего источника данных (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Wildberries
Стек: Go
> Пример ответа
В Go для уведомления клиента о недоступности внешнего источника данных используйте структурированные HTTP-ответы с соответствующим кодом состояния и информативным телом.
Пример реализации:
GOfunc (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 Unavailablew.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 или имя сервиса) - только общее сообщение.
-
Логируйте полную ошибку на сервере для отладки, но не передавайте её клиенту.
> Похожие задачи по backend
Что такое кэширование и слои кэширования в контейнерах
Как правильно работать с map и структурой в Go, чтобы избежать паники
Передается ли JWT в зашифрованном или открытом виде
Зачем используются интерфейсы в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью