Использовать гнездо js трубу, охранник или go для перехватчика? - PullRequest
0 голосов
/ 06 мая 2020

Ну, у меня есть несколько трубок в приложении, над которым я работаю, и я начинаю думать, что они на самом деле должны быть охранниками или даже перехватчиками.

Один из них называется PincodeStatusValidationPipe и его работа просто как снег. Он проверяет кеш на наличие определенного значения, если это значение является ожидаемым, затем возвращает то, что получает, в противном случае генерирует исключение FORBIDEN.

Другой pipe называется UserExistenceValidationPipe, он работает с login и проверяет, существует ли пользователь в БД и некоторые другие вещи, связанные с этим пользователем (например, присутствует ли пароль, ожидаемый в методе входа в систему, и если он соответствует, то соответствует ли он паролю полученного пользователя), в противном случае он генерирует соответствующие исключения.

Я знаю, что это скорее вопрос дизайна, но я считаю его очень важным и буду признателен за любые подсказки. Заранее спасибо.

РЕДАКТИРОВАТЬ:

Ну, я думаю, UserExistenceValidationPipe определенно не лучший выбор имени, что-то вроде UserValidationPipe подходит лучше.

1 Ответ

0 голосов
/ 06 мая 2020

Если вы уже бросаете FORBIDEN, я бы посоветовал перенести PincodeStatusValidationPipe на PincodeStatusValidationGuard, поскольку возвращение false от охранника выдаст вам FORBIDEN. У вас также будет полный доступ к объекту Request, который неплохо иметь.

Для UserExistenceValidationPipe канал - не самое худшее. Я считаю, что проверка существования является частью бизнес-логики c, и как таковая должна обрабатываться в службе, но это я. Я использую каналы для проверки и преобразования данных, то есть я проверяю форму данных и передаю их службе, если форма выглядит правильной.

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


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

...