中间件 (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 }))