Пост

Валидация данных

Базовые знания про валидацию данных

Валидация данных

Вводная

Небольшая заметка про валидацию данных.

Данные, которые поступают к нам в систему из вне, это сайт или сервис являются ненадежными.

Данные которые должны быть в системе, должны быть по умолчанию в корректном состоянии.

Валидация данных - это процесс проверки данных на соответствие заранее известным правилам и требованиям.

Типы данных

По степени доверия данные можно разделить несколько групп:

  • Внешние - данные которые поступают из вне, например из поля ввода. Это точно невалидные данные.
  • Данные прошедшие первичную проверку. Это уже немного отфильтрованные данные, например ввод капчи, повтор ввода пароля.
  • Данные сущности. Например, поле email в сущности Customer, должен быть корректным email адресом, а не просто строкой.
  • Данные домена. Это логика всей системы. Например, не допускается наличия в системе двух разных пользователей с одинаковым логином.
  • Данные отдаваемые другим частям системы. Эти данные должны быть в валидном состоянии.

Первичная проверка

При первичной проверке данные могут поступать через запрос, форму или как то еще. На этом этапе нужно проверить если данные не валидны, нужно прервать операцию и сообщить пользователю, что данные некорректны.

Так же возможно проверять валидность данных в конце взаимодействия с формой.

Как правило, это все делается на фронтенде.

Данные сущности

Данные попали в сущность.

У каждой сущности должна быть бизнес-логика и в соответствии с ней должны происходить проверки.

Это должно определяться заранее.

Например:

  • логин может быть от 3 до 16 символов
  • год рождения не может быть больше 2015 года
  • файл не должен быть в формате jpg
  • и тд…

Валидация сущности может быть строгой, когда данные будут проверяться каждый раз при изменении сущности, полностью все. Или же мягкой, когда проверяются отдельные свойства.

Данные домена

Здесь смотрим шире. Противоречивость данных рассматривается в контексте всей системы, отношения между сущностями.

Валидация это и есть бизнес логика приложения.

Примером тут может быть наличия в системе еще одного счета с таким же номером и датой, что противоречит доменному слою.

По-хорошему нужно сразу прописать все правила.

Данные отдаваемые другим частям системы

Готовые данные, которые отдаются куда-то дальше.

Это может быть сервис или сохранение в базу данных.

Воронка

Как мы уже поняли процесс валидации подобен воронке, где в итоге получаем чистые, отфильтрованные данные удовлетворяющие логике нашему приложению.

Тут важно если данные невалидны сообщить об этом полльзователю, ведь кто отправляет данные не понимает на каком уровне произошла ошибка.

Как происходит валидация

Важно настроить валидацию, как единый механизм. Для этого используются специальные валидаторы.

Логика работы может быть такой:

  • Данные приходят из вне в контроллер
  • Происходит валидация на стороне пользователя, без задействования сервера.
  • Запускаем валидатор сущности
  • Валидация на уровне всего домена
  • Достигли цели - данные валидны!

На каждом из этих этапов может быть откат назад.

Авторский пост защищен лицензией CC BY 4.0 .

Хотите оптимизировать свой бизнес, нужен сервис, сайт или интеграция.

Бесплатно расчитаю время разработки, предложу решение вашей задачи.