Объединение ошибок валидации ввода и бизнес-логики

Недавно мы начали заменять давно работающее приложение на новое, используя современный стек технологий, drf в бэкенде. Итак, все новое, мы только начали, но большинство требований старые.

Сегодня мы получили требование, что клиент должен отображать все ошибки проверки полей и ошибки проверки бизнес-логики (если возможно обработать) одновременно пользователю, когда он пытается выполнить операции записи. Дополнительное замечание - дальнейшие валидации еще предстоят, и все они должны выполняться в одном вызове.

Итог: одна операция post/put с одним ответом, который был сильно обработан и содержит все ошибки валидации и бизнес-логики.

Звучит неудобно для меня или это легко осуществить?

Первой мыслью было то, что мы можем написать пользовательский обработчик исключений (custom_exception_handler), который ожидает ValidationError, выполняет все бизнес-проверки и обогащает ответ. Но этот обработчик будет расти с каждой конечной точкой, которая нуждается в дополнительной валидации. (А текущее приложение большое.)

Есть ли лучший способ?

Как вы к этому относитесь? Нарушает ли это передовой опыт?

Возможно, клиент должен также выполнять проверку полей и делать асинхронные вызовы дополнительных конечных точек проверки, чтобы он мог направлять пользователя к чистой операции записи?

Вернуться на верх