基础

梗概

中间件是一种在路由处理器之前调用的函数。它们可以访问请求和响应对象,并且可以执行任何代码。中间件也可以终止请求-响应周期。

定义中间件

在 Nest 中,您可以通过以下步骤实现自定义中间件:

  1. 创建一个中间件类,实现 NestMiddleware 接口,或者编写一个普通函数。
  2. 在模块中使用 configure() 方法设置中间件,指定要应用中间件的路由路径。

注意

  1. 调用next()方法就会结束当前中间件的处理,并转到下一个中间件
  2. 直接return返回,则结束所有中间件处理,并直接返回处理后的结果

示例

之一

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: Function) {
    console.log('Request...');
    next();
  }
}

之一

例如,以下是一个简单的日志记录中间件示例:

// logger.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.log('Request...');
    next();
  }
}
// app.module.ts
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { LoggerMiddleware } from './common/middleware/logger.middleware';
import { CatsModule } from './cats/cats.module';
@Module({
  imports: [CatsModule],
})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(LoggerMiddleware)
      .forRoutes('cats'); // Apply the middleware to /cats route handlers
  }
}

基本概念

base::

中间件

目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领

梗概

  • 是一个很宽泛的概念, 只要是把通信双方连接起来的那一层, 都可以称为中间件
    • 即三层结构:前端、中间层、服务端

使用范围

作用

指向原始笔记的链接