Если вы помните следующее, возможно, будет неплохо продублировать некоторые проверки.
Давайте разберем валидации на две части. A) Бизнес-валидации, например «Сумма в поле X должна превышать 500 долларов США, если установлен флажок Y» B) Проверка основных данных, например, проверки типов данных, проверки на нулевые значения и т. д. (Мы можем спорить, что каждая проверка - это проверка бизнеса, но это зависит только от контекста).
Категория A: Это часть вашей бизнес-логики и должна храниться только на стороне сервера.
Категория B: Проверки этого типа являются потенциальными кандидатами для размещения на стороне клиента. Но имейте в виду, что проверка на стороне браузера может быть обойдена . Это не означает, что у вас вообще не должно быть проверок на стороне браузера, но такие проверки должны рассматриваться просто как бонус для сохранения сетевой передачи данных с сервера. Сервер должен повторно выполнить эти проверки.
В двух словах, проверки не должны рассматриваться как единица кода многократного использования на всех уровнях. Их цель варьируется и должна допускать избыточность.
Надеюсь, это поможет.