最近为了它的装饰,我切换到了nestJS。但我发现有两件事Middleware和@UseGuards。当我只使用 expressjs 时,我使用了中间件。现在我关心的是这两者之间的实际区别是什么。在我的情况下,这些看起来是一样的。
Pipes, Filters, Guards, 和Interceptors都可以被认为是“专业中间件”,因为它们每个都有自己的用途,而“中间件”本身是一个非常广泛的术语。
管道用于请求验证和有效负载转换。将数据序列化为您所期望的,仅此而已。
过滤器是您的错误处理中间件。您可以确定使用特定错误处理程序的路由以及如何管理每个路由的复杂性。
拦截器是前后中间件,例如记录请求、响应映射和缓存管理。在每个请求之前和之后运行它的能力非常强大和有用。
最后,您的问题与什么有关,警卫是您的身份验证中间件。他们告诉你的服务器谁是允许的,谁不允许通过指定的路由。
快速回答是,守卫和中间件功能之间不一定有区别,但中间件是一个更广泛的话题,而 NestJS 中的守卫是一个非常具体的东西。唯一的其他区别是在每个类被调用时(中间件 -> 防护 -> 拦截器(之前) -> 管道 -> 控制器 -> 服务 -> 控制器 -> 拦截器(之后) -> 过滤器(如果适用) -> 客户端)
注意:这是假设一个 ExpressJS HttpAdapter 而不是 Fastify 。Fatify 中间件的工作方式略有不同,可能与 Nest 中间件结构不完全兼容。因此,最好使用上述类。
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |