创建中间件
nest g middleware middleware/init
nest g middleware init
配置中间件
// init 全部都需要匹配的中间件
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class InitMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log('all 中间件');
next();
}
}
// user自己才能匹配的中间件
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class UserMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log('user 中间件');
next();
}
}
在module中配置
import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common';
// 导入中间价
import {InitMiddleware}from './middleware/init.middleware'
import {UserMiddleware}from './middleware/user.middleware'
export class AppModule implements NestModule{
configure(consumer:MiddlewareConsumer){
consumer
// 所有路由都需要拼配的中间件
.apply(InitMiddleware) // 配置的中间件名称
.forRoutes('*') // 配置过滤的路由
// 只有use需要匹配的中间件
.apply(UserMiddleware)
.forRoutes('user')
}
}
全局中间件
全局中间件不能使用类中间件,只能使用函数示中间件