中间件 (middleware.ts)
文件路径 /src/miidleware/名称/名称.middleware.spec.ts
nest g mi 名称
modeule 级别的中间件注册 @@3
import { Injectable, NestMiddleware } from '@nestjs/common'
import { Request, Response, NextFunction } from 'express'
@Injectable()
export class GreatMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
if(true){
next()
}else{
res.send('拦截')
}
}
}
import { MiddlewareConsumer, NestModule, RequestMethod } from '@nestjs/common'
export class IndexModule implements NestModule {
// modeule 级别的中间件注册
configure(consumer: MiddlewareConsumer) {
// forRoutes() 指定哪些路由使用中间件
consumer.apply(GreatMiddleware).forRoutes('路径 A')
consumer.apply(GreatMiddleware).forRoutes({ path: '路径/路径 A', method: RequestMethod.GET }, { path: '路径/路径 B', method: RequestMethod.GET })
consumer.apply(GreatMiddleware).forRoutes(AbcController)
}
}
全局中间件注册 (main.ts) @@2
// 自定义全局中间件
function MiddleWareAll(req: Request, res: Response, next: NextFunction) {
console.log(req.originalUrl)
next()
}
app.use(MiddleWareAll)
第三方全局中间件
import session from 'express-session'
app.use(session({ secret: '加盐', rolling: true, name: 'Alrcly.sid', resave: false, saveUninitialized: false }))