This example shows two middleware: LoggerMiddleware runs first and logs a message, then AuthMiddleware runs and logs another message. The order in apply() controls this sequence.
import { Injectable, NestMiddleware, MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('Logger: Request received');
next();
}
}
@Injectable()
class AuthMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('Auth: Checking authentication');
next();
}
}
@Module({})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware, AuthMiddleware)
.forRoutes('test');
}
}