nestjs 全栈进阶--中间件
在NestJS中,中间件是一种组织应用程序逻辑的方式,它可以拦截进入的请求和传出的响应。中间件函数可以访问NestJS提供的上下文对象,并且可以决定是否继续处理请求,或是直接返回响应。
创建一个中间件的基本步骤如下:
- 创建一个中间件函数。
- 将中间件函数注册到NestJS应用程序中。
以下是一个简单的中间件示例:
// middleware/logger.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log('Request URL:', req.url);
next();
}
}
然后在你的模块中注册这个中间件:
// app.module.ts
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { LoggerMiddleware } from './middleware/logger.middleware';
@Module({
// ... (controllers and providers)
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware)
.forRoutes('*'); // 应用于所有路由
}
}
在这个例子中,我们创建了一个记录请求URL的简单中间件,并将其注册为全局中间件,即应用于所有路由。你可以根据需要调整中间件的注册方式,以便只为特定的路由或控制器应用中间件。
评论已关闭