Nest.js 添加中间件


Docs: https://docs.nestjs.com/middleware

创建中间件 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();
  }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM