Объединение ошибок валидации ввода и бизнес-логики
Недавно мы начали заменять давно работающее приложение на новое, используя современный стек технологий, drf в бэкенде. Итак, все новое, мы только начали, но большинство требований старые.
Сегодня мы получили требование, что клиент должен отображать все ошибки проверки полей и ошибки проверки бизнес-логики (если возможно обработать) одновременно пользователю, когда он пытается выполнить операции записи. Дополнительное замечание - дальнейшие валидации еще предстоят, и все они должны выполняться в одном вызове.
Итог: одна операция post/put с одним ответом, который был сильно обработан и содержит все ошибки валидации и бизнес-логики.
Звучит неудобно для меня или это легко осуществить?
Первой мыслью было то, что мы можем написать пользовательский обработчик исключений (custom_exception_handler), который ожидает ValidationError, выполняет все бизнес-проверки и обогащает ответ. Но этот обработчик будет расти с каждой конечной точкой, которая нуждается в дополнительной валидации. (А текущее приложение большое.)
Есть ли лучший способ?
Как вы к этому относитесь? Нарушает ли это передовой опыт?
Возможно, клиент должен также выполнять проверку полей и делать асинхронные вызовы дополнительных конечных точек проверки, чтобы он мог направлять пользователя к чистой операции записи?