Синергия валидации на фронтенде и бэкенде
Я создал валидацию формы регистрации на фронтенде и бекенде и проверяю как на фронтенде, так и на бекенде: состоят ли имя и фамилия только из букв, содержит ли пароль цифры, заглавные и строчные буквы, правильно ли сохранен email.
Интерфейс сообщает об ошибках. Мой вопрос в том, что поскольку я проверяю все условия на фронтенде, должен ли бэкенд также посылать сообщения об ошибках на фронтенд?
То есть и фронтенд, и бэкенд проверяют валидацию данных, но должен ли фронтенд реагировать на сообщения об ошибках бэкенда? Кажется излишним, чтобы бэкенд посылал информацию о том, что, например, пароль слишком короткий, поскольку фронтенд уже делает это. Бэкенд должен только убедиться, что, например, длина пароля соответствует требованиям.
Второй вопрос: должен ли я проверить на стороне бэкенда, был ли установлен флажок о принятии правил сайта или пароль и повторный пароль одинаковы?
Прежде всего, если вы не хотите делать валидацию как на фронтенде, так и на бекенде, лучше оставить валидацию на бекенде.
Фронтальная валидация в основном используется для:
- сделать пользовательский интерфейс более удобным и ответственным
- сократить запросы к бэкенду
Если вы делаете небольшой домашний проект, то может показаться хорошей идеей оставить только валидацию фронтенда. Но по мере роста приложения вы можете столкнуться со многими проблемами:
- новая логика, требующая изменения данных в ваших моделях (без формы на фронтенде), не будет работать, так как вы не можете проверить модель перед сохранением.
- вы получите форму на бэкенде с недействительными данными (например, от клиента с отключенным/сломанным JS, или от кого-то, кто отключил валидацию специально).
- вы можете пропустить некоторые случаи валидации на фронтенде и также получите несогласованные данные
Итак, валидация на бэкенде должна быть обязательно. Вы можете пропустить некоторые проверки на фронтенде (или пропустить их, если они не нужны, например, для панели администратора). Но отсутствие валидации на бэкенде - это тупик для масштабируемых приложений.
Нужно ли проверять на стороне бэкенда, установлен ли флажок в отношении был ли установлен флажок о принятии правил сайта или же пароль и повторный пароль одинаковы?
Да, лучше убедиться в корректности данных перед их сохранением в БД.
Edit: А, я понял, значит, у вас есть валидация бэкенда. В этом случае, это действительно зависит от вашего приложения. Лучше показать какое-то объяснение, чтобы пользователь не запутался. Но иногда имеет смысл просто показать, что на сервере произошла какая-то ошибка, и оставить все как есть.