一篇文章带你了解 NestJS 中的 AOP 架构(中间件,拦截器,守卫,异常过滤器,管道)
// 引入 NestJS 的核心组件
import { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
// 引入自定义的中间件
import { MyMiddleware } from './middleware/my.middleware';
// 引入拦截器、守卫、过滤器等组件
import { MyInterceptor } from './interceptor/my.interceptor';
import { MyGuard } from './guard/my.guard';
import { MyExceptionFilter } from './filter/my-exception.filter';
@Module({
// 配置模块需要注入的提供者(如果有的话)
})
export class AppModule implements NestModule {
// 配置中间件,并为每个中间件指定相应的处理函数
configure(consumer: MiddlewareConsumer) {
consumer
.apply(MyMiddleware) // 应用自定义中间件
.forRoutes('*'); // 对所有路由有效
}
}
// 使用模块的提供者来配置全局拦截器、守卫和过滤器
export const appProviders = [
{
provide: APP_INTERCEPTOR,
useValue: new MyInterceptor(),
},
{
provide: APP_GUARD,
useClass: MyGuard,
},
{
provide: APP_FILTER,
useClass: MyExceptionFilter,
},
];
这段代码展示了如何在NestJS框架中定义一个简单的中间件,并展示了如何在AppModule中配置它。同时,代码还演示了如何配置全局拦截器、守卫和过滤器,这些是AOP编程中常用的技术。
评论已关闭