✅ API Input Validation в .NET: почему FluentValidation лучше, чем Data Annotations
Data Annotations отлично подходят для простых правил:
[Required] - ок
[MaxLength(50)] - норм
Но как только тебе нужно что-то “умнее”, начинается боль:
- проверить данные в базе
- валидировать по настройкам из appsettings.json
- вызвать сервис и принять решение динамически
Data Annotations упираются в потолок, потому что Attribute - это статичная штука.
Туда не получится нормально прокинуть зависимости через DI.
И вот здесь FluentValidation реально сияет ✨
Почему:
FluentValidation-валидаторы - это обычные классы, которые регистрируются в DI контейнере.
А значит, внутрь можно инжектить что угодно:
- сервисы
- конфиги
- репозитории
- кэш
- внешние API
Пример:
нужно проверить, что CouponCode валиден через IPricingService?
Просто инжектишь IPricingService в конструктор валидатора и делаешь проверку.
В итоге валидация превращается из “статической проверки полей”
в полноценный слой логики - динамический, умный и расширяемый.
FluentValidation = правильная валидация для реального продакшена.
Post #824
3.22K
