Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在nestJS中@UseGuards和中间件有什么区别_Typescript_Nestjs - Fatal编程技术网

Typescript 在nestJS中@UseGuards和中间件有什么区别

Typescript 在nestJS中@UseGuards和中间件有什么区别,typescript,nestjs,Typescript,Nestjs,最近我换了nestJS做装饰。但是我发现有两件事中间件和@UseGuards。当我只使用expressjs时,我使用中间件。 现在我关心的是这两者的实际区别是什么。在我的例子中,这些看起来是一样的。管道,过滤器,防护,和拦截器都可以被认为是“专业中间件”,因为它们每个都有自己的用途,而“中间件”本身是一个非常宽泛的术语 管道用于请求验证和负载转换。将数据序列化为您所期望的,而不是更多 过滤器是您的错误处理中间件。您可以告诉哪些路由使用特定的错误处理程序,以及如何管理每个路由的复杂性 拦截器是您的

最近我换了nestJS做装饰。但是我发现有两件事
中间件
@UseGuards
。当我只使用expressjs时,我使用中间件。
现在我关心的是这两者的实际区别是什么。在我的例子中,这些看起来是一样的。

管道
过滤器
防护
,和
拦截器
都可以被认为是“专业中间件”,因为它们每个都有自己的用途,而“中间件”本身是一个非常宽泛的术语

管道用于请求验证和负载转换。将数据序列化为您所期望的,而不是更多

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

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

最后,也是您的问题所涉及的,警卫是您的身份验证中间件。它们告诉您的服务器谁是和谁不允许通过指定的路由

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

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