创建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();