NestJS 如何自定义中间件以及实际项目基于中间件提升项目开发效率
在NestJS中,自定义中间件可以通过创建一个类并使用@Injectable()
装饰器标记为可注入的服务,然后实现NestMiddleware
接口。
以下是一个简单的自定义中间件的例子:
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class CustomMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
// 在发送响应前的逻辑
console.log('Custom middleware logic');
// 必须调用next()以调用下一个中间件或路由处理程序
next();
}
}
然后在你的模块中配置这个中间件:
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { CustomMiddleware } from './custom.middleware';
@Module({
// ... (controllers and providers)
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(CustomMiddleware)
.forRoutes('*'); // 这里可以指定具体的路由或路由组
}
}
通过这种方式,你可以在请求-响应周期的特定阶段注入自定义逻辑,这样可以显著提高开发效率。在实际项目中,中间件可以用于日志记录、身份验证、权限校验、缓存、响应处理等多种场景。
评论已关闭