梗概
中间件是一种在路由处理器之前调用的函数。它们可以访问请求和响应对象,并且可以执行任何代码。中间件也可以终止请求-响应周期。
定义中间件
在 Nest 中,您可以通过以下步骤实现自定义中间件:
- 创建一个中间件类,实现
NestMiddleware接口,或者编写一个普通函数。 - 在模块中使用
configure()方法设置中间件,指定要应用中间件的路由路径。
注意
- 调用
next()方法就会结束当前中间件的处理,并转到下一个中间件 - 直接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::
中间件
目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领
梗概
- 是一个很宽泛的概念, 只要是把通信双方连接起来的那一层, 都可以称为中间件
- 即三层结构:前端、中间层、服务端
使用范围
作用
指向原始笔记的链接
- 做API 网关
- 做请求验证和过滤等