Каков наилучший способ вернуть ошибки из бизнес-логики или приложения? - PullRequest
0 голосов
/ 03 сентября 2018

Я работаю над API, используя Laravel. Я пишу бизнес-логику и логику приложения и стараюсь максимально разделить их. Тем не менее, я новичок в таких понятиях. Например, у меня есть логика для входа в систему пользователя. Я должен проверить:

  1. Если данные кредиты действительны или нет?
  2. Если в системе существуют кредиты?
  3. Если пользователь активен или нет
  4. сохранить данные
  5. Попробуйте получить некоторые данные, но не найдены
  6. и так далее ...

Я проверяю не все это в контроллере (поскольку я думаю, что это не обязанность контроллера), а в отдельном LoginFormProcessor классе, который делегируется контроллером. Если все проверки пройдены, LoginFormProcessor делегирует объект для сохранения / получения объекта в / из базы данных. Вот иерархия:

Controller -> LoginFormProcessor -> Repository

Я хочу вернуть подробные ошибки JSON (если они есть), возникшие в LoginFormProcessor или Repository, но не напрямую из этих классов (поскольку это не является их обязанностью), а из Контроллера.

Как я могу вернуть упомянутые ошибки Контроллеру, чтобы Контроллер мог создать значимый ответ и отправить клиенту. Должен ли я возвращать некоторые коды ошибок типа integer из LoginFormProcessor и Repository? Но тогда мне придется проверить все возможные коды ошибок, другая головная боль. Я не думаю, что это хорошая практика.

Есть какие-нибудь предложения и хорошие практики по этому поводу?

1 Ответ

0 голосов
/ 04 сентября 2018

Вы хотите, чтобы ваша бизнес-логика и логика вашего приложения не зависели от вашего механизма доставки, что означает, что они не должны возвращать HttpCodes. Вместо этого вы должны использовать исключения (настраиваемые исключения при необходимости), перехватывать их на уровне представления (контроллеры) и преобразовывать их соответствующим образом.

Поскольку вы отметили свой вопрос в Laravel, вы можете взглянуть на https://laravel.com/docs/5.6/errors#render-method, чтобы узнать, как перехватить исключения и перевести их в HttpCodes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...