创建中间件
nest g middleware middleware/initnest 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')}}
全局中间件
全局中间件不能使用类中间件,只能使用函数示中间件
