【问题标题】:What is the difference between @UseGuards and Middleware in nestJS@UseGuards 和 NestJS 中的中间件有什么区别
【发布时间】:2019-10-28 11:10:19
【问题描述】:

最近我改用nestJS来装饰它。但我发现Middleware@UseGuards 有两件事。当我只使用 expressjs 时,我使用中间件。 现在我关心的是这两者之间的实际区别是什么。就我而言,这些看起来是一样的。

【问题讨论】:

    标签: typescript nestjs


    【解决方案1】:

    PipesFiltersGuardsInterceptors 都可以被认为是“专用中间件”,因为它们每个都有自己的用途,而“中间件”本身就是一个非常广泛的术语。

    管道用于请求验证和有效负载转换。将数据序列化为您所期望的,仅此而已。

    过滤器是您的错误处理中间件。您可以知道哪些路由使用特定的错误处理程序以及如何管理每个路由的复杂性。

    拦截器是您的前后中间件,例如记录请求,以及响应映射和缓存管理。在每个请求之前和之后运行它的能力非常强大和有用。

    最后,您的问题与什么有关,守卫是您的身份验证中间件。他们告诉你的服务器谁是,谁不被允许通过指定的路线。

    快速回答是,守卫和中间件函数之间不一定有区别,但中间件是一个更广泛的主题,而 NestJS 中的守卫是一个非常具体的东西。唯一的另一个区别是调用每个类的时间(中间件 -> 保护 -> 拦截器(之前)-> 管道 -> 控制器 -> 服务 -> 控制器 -> 拦截器(之后)-> 过滤器(如果适用)-> 客户端)

    注意:这是假设 ExpressJS HttpAdapter 而不是 Fastify 的。 Fatify 中间件的工作方式略有不同,可能与嵌套中间件结构不完全兼容。因此,最好使用上述类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 2017-12-27
      • 2019-12-08
      • 2021-09-23
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多