创建中间件 logger.middleware.ts
import { Injectable, NestMiddleware, MiddlewareFunction } from '@nestjs/common'@Injectable()export class LoggerMiddleware implements NestMiddleware { resolve(...args: any[]): MiddlewareFunction { return (req, res, next) => { console.log('收到请求:'); next(); } }}
使用中间件 app.module.ts
import { Module, NestModule, MiddlewareConsumer, RequestMethod } from '@nestjs/common';import { AppController } from './app.controller';import { AppService } from './app.service';import { LoggerMiddleware } from './logger.middleware'@Module({ imports: [], controllers: [AppController], providers: [AppService],})export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(LoggerMiddleware) .forRoutes({ path: '*', method: RequestMethod.ALL, }) }}
函数 中间件
export function logger(req, res, next) { console.log(`Request...`); next();};---configure(consumer: MiddlewareConsumer) { consumer .apply(logger) .forRoutes(CatsController); }
全局使用
function logger(req, res, next) { console.log('收到请求'); next();}const app = await NestFactory.create(ApplicationModule);app.use(logger);await app.listen(3000);
5到6的修改
// Before@Injectable()export class LoggerMiddleware implements NestMiddleware { resolve(...args: any[]): MiddlewareFunction { return (req: Request, res: Response, next: Function) => { console.log('Request...'); next(); }; }}// After@Injectable()export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: Function) { console.log('Request...'); next(); }}