创建中间件

  1. nest g middleware middleware/init
  2. nest g middleware init

配置中间件

  1. // init 全部都需要匹配的中间件
  2. import { Injectable, NestMiddleware } from '@nestjs/common';
  3. @Injectable()
  4. export class InitMiddleware implements NestMiddleware {
  5. use(req: any, res: any, next: () => void) {
  6. console.log('all 中间件');
  7. next();
  8. }
  9. }
  10. // user自己才能匹配的中间件
  11. import { Injectable, NestMiddleware } from '@nestjs/common';
  12. @Injectable()
  13. export class UserMiddleware implements NestMiddleware {
  14. use(req: any, res: any, next: () => void) {
  15. console.log('user 中间件');
  16. next();
  17. }
  18. }

在module中配置

  1. import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common';
  2. // 导入中间价
  3. import {InitMiddleware}from './middleware/init.middleware'
  4. import {UserMiddleware}from './middleware/user.middleware'
  5. export class AppModule implements NestModule{
  6. configure(consumer:MiddlewareConsumer){
  7. consumer
  8. // 所有路由都需要拼配的中间件
  9. .apply(InitMiddleware) // 配置的中间件名称
  10. .forRoutes('*') // 配置过滤的路由
  11. // 只有use需要匹配的中间件
  12. .apply(UserMiddleware)
  13. .forRoutes('user')
  14. }
  15. }

全局中间件

全局中间件不能使用类中间件,只能使用函数示中间件