nestjs学习day4

68 阅读1分钟

创建logger中间件

nest g mi logger

1.编写局部中间件

import {Injectable, NestMiddleware} from "@nestjs/common";
import {Request,Response,NextFunction} from 'express'
@Injectable()
export  class  Logger implements NestMiddleware{
    use(req:Request,res:Response,next:NextFunction){
        console.log("我来了")
        res.send('我被拦截了')
        // next()
    }
}

2.在module中使用局部中间件

import {MiddlewareConsumer, Module, NestModule, RequestMethod} from '@nestjs/common';
import {UserController} from './user.controller';
import {Logger} from "../middleware";
import {UserService} from "./user.service";

@Module({
  controllers: [UserController],
  providers: [UserService],
  exports:[UserService]
})
export class UserModule implements NestModule{
  configure(consumer: MiddlewareConsumer): any {
    // consumer.apply(Logger).forRoutes('user')
    // consumer.apply(Logger).forRoutes({path:'user',method:RequestMethod.GET})
    consumer.apply(Logger).forRoutes(UserController)

  }
}

3.全局中间件,main.js中创建

import {NestFactory} from '@nestjs/core';
import {AppModule} from './app.module';
import {VersioningType} from "@nestjs/common";
import * as session from 'express-session'
import * as cors from 'cors'
import {Request,Response,NextFunction} from 'express'
const whiteList=['/list']
function MiddleWareAll(req:Request,res:Response,next:NextFunction){
  console.log(req.originalUrl);
  if(whiteList.includes(req.originalUrl)){
    next()
  }else{
    res.send('不是白名单')
  }
}
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableVersioning({
    type:VersioningType.URI
  })
  app.use(cors)
  app.use(MiddleWareAll)
  app.use(session({secret:"xiaoman",rolling:true,
    name:"xiaoman.sid",cookie:{maxAge:99999}}))
  await app.listen(3000);
}
bootstrap();