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