@FreeDobby
Свободный Добби

Как правильно организовать валидацию данных?

Хотелось бы просто, с минимумом кода сделать валидацию данных в контроллере spring. Гуглил, но пока что подходящего и работающего решения не нашел. Я бы хотел чтобы было так:

1. Вся валидация на аннотациях, без дополнительных классов валидаторов на каждую модель (я видел там в javax.validation.constraints есть такие аннотации).
2. Желательно не навешивать ничего дополнительного на экшэны в контроллере (я имею ввиду например BindingResult в параметрах - не очень хотелось бы в каждом методе это прописывать). Желательно просто сделать чтобы например повесил на параметр аннотацию Valid и если данные не валидны - то уже при вызове экшена сразу выбило бы ошибку, а на фронт пришло бы что-то вроде "status: error, errors: [ error1, error2 ]" (в json). Возможно надо сделать какой-то глобальный обработчик исключений чтобы ловить ошибки валидации и отдавать их в таком формате.
3. Также хотелось бы чтобы при вызове любого экшэна в контроллере при успешной операции (ошибок не возникло) возвращалось "status: success, result: {result}" (в json, на месте {result} соответственно сам результат метода, если он был не void - тогда этого поля просто не должно быть или null). Но чтобы опять-таки не прописывать для каждого метода это, а просто сделать где-то какой-то глобальный перехватчик (уже не исключений только, а хз даже как это назвать... успешных завершений)

Подскажите пожалуйста как такое организовать? Желательно с примерами.

P.S. Только не посылайте меня в гугл, я там пока ничего подходящего не нашел! :(
  • Вопрос задан
  • 455 просмотров
Пригласить эксперта
Ответы на вопрос 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Для начала прочти документацию по Spring. Всё максимально разжёвано.

  1. Дополнительные классы-валидаторы потребуются только для особенных случаев. В целом можно ограничиться аннотациями из Java Bean Validation и его реализаций.
  2. Вообще-то в BindingResult собираются результаты валидации. И ошибки валидации, которые ты отправишь потом на фронт, берутся из него же.
  3. В смысле? Тебе лень в конце каждого метода написать return ResponseEntity.ok()?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы