Дата: 2026-06-24 Статус: Implemented
writeValidationError возвращал err.Error() в теле ответа всегда, включая production. Это утекало:
Key: 'createBookingRequest.EndTime'Error:Field validation for 'EndTime' failed on the 'datetime' tagВ production: details: "validation failed"
В development: details: err.Error() (полная картина для отладки)
func writeValidationError(w http.ResponseWriter, err error) {
details := err.Error()
if AppEnv == "production" {
details = "validation failed"
}
writeJSON(w, http.StatusUnprocessableEntity, map[string]interface{}{
"error": "validation failed",
"details": details,
})
}
| Вариант | Плюсы | Минусы |
|---|---|---|
| Возвращать translated messages | Понятно клиенту | Нужен словарь переводов |
| Коды ошибок вместо текста | Абстракция | Клиент всё равно должен маппить |
| Отключить валидацию в production?! | — | Глупость |
#decision-record #security #validation #api