在开发 NestJS 应用程序时,有时我们需要某些模块(例如 SpecialModule)避开全局的拦截器(useGlobalInterceptors)、过滤器(useGlobalFilters)和守卫(useGlobalGuards)。本文将介绍如何在 NestJS 中实现一个特殊的 SpecialModule,通过在全局拦截器、过滤器和守卫中手动添加逻辑来跳过 SpecialModule 的路由。
步骤一:创建 SpecialModule
首先,我们创建一个 SpecialModule。你可以使用 Nest CLI 或手动创建模块文件。
步骤二:创建 SpecialController 和 SpecialService
接下来,为 SpecialModule 创建控制器和服务。
在 special.controller.ts
中添加一个简单的路由:
在 special.service.ts
中添加一个简单的方法:
步骤三:修改 AppModule 以包含 SpecialModule
确保 AppModule
包含 SpecialModule
:
步骤四:创建全局拦截器、过滤器和守卫
创建全局拦截器、过滤器和守卫,添加逻辑以跳过 SpecialModule 的路由。
创建全局拦截器
创建全局过滤器
创建全局守卫
步骤五:在主应用程序中应用全局拦截器、过滤器和守卫
在 main.ts
中注册全局拦截器、过滤器和守卫:
通过这些修改,SpecialModule
中的SpecialController
将不会被全局拦截器、过滤器和守卫所影响。其他路由将继续被全局拦截器、过滤器和守卫处理。
结论
通过以上步骤,我们成功创建了一个特殊的 SpecialModule
,并在全局拦截器、过滤器和守卫中添加了逻辑,使其能够跳过 SpecialModule
的路由。希望这篇文章对你在 NestJS 项目中的实现有所帮助。