В чем разница между @UseGuards и Middleware в nestJS - PullRequest
1 голос
/ 27 октября 2019

Недавно я переключился на nestJS для его украшения. Но я обнаружил, что есть две вещи Middleware и @UseGuards. Я работал с Middleware, когда использовал только expressjs. Теперь я обеспокоен тем, какова реальная разница между этими двумя. В моем случае они выглядят одинаково.

1 Ответ

2 голосов
/ 28 октября 2019

Pipes, Filters, Guards и Interceptors можно рассматривать как «специализированное промежуточное программное обеспечение», поскольку каждый из них служит своей цели, тогда как «промежуточное программное обеспечение» само по себе являетсяочень широкий срок.

Трубы изготавливаются для проверки запроса и преобразования полезной нагрузки. Сериализация данных на то, что вы ожидаете, и не намного.

Фильтры - это ваше промежуточное ПО для обработки ошибок. Вы можете указать, какие маршруты использовать конкретные обработчики ошибок и как управлять сложностями вокруг каждого из них.

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

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

Быстрый ответ: не обязательно разница между защитой и функцией промежуточного ПО, но промежуточное ПО гораздо ширетема в то время как охранник в NestJS это очень специфическая вещь. Единственное другое отличие заключается в том, что каждый класс вызывается (промежуточное ПО -> защита -> перехватчик (до) -> канал -> контроллер -> служба -> контроллер -> перехватчик (после) -> фильтр (если применимо) -> клиент)

Примечание: Предполагается, что HttpAdapter ExpressJS, а не Fastify. Промежуточное ПО Fatify работает немного по-другому и может быть не полностью совместимо со структурой промежуточного ПО гнезда. Следовательно, предпочтительно использовать вышеупомянутые классы.

...