返回
Nestjs 中间件简析,保姆级教程,轻松玩转!
前端
2023-09-08 19:49:39
Nestjs 中间件简介
中间件就是匹配路由之前或者匹配路由完成做的一系列的操作。中间件中如果想往下匹配的话,那么需要写 next()。Nestjs 的中间件实际上等价于 express 中间件。
中间件有什么用
Nestjs 中间件可以用来处理一些通用的任务,比如身份验证、日志记录、错误处理等。我们可以把这些任务放到中间件里,这样就不需要在每个路由中重复处理了。
如何创建中间件
Nestjs 中间件可以通过创建一个类来实现。这个类必须实现 MiddlewareInterface
接口。接口定义了一个 use()
方法,这个方法接收一个 Request
和一个 Response
对象,并返回一个 Promise
。
以下是一个简单的中间件示例:
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('Request received');
next();
}
}
如何使用中间件
在 Nestjs 中可以使用 @UseMiddleware()
装饰器来应用中间件。这个装饰器可以应用到控制器类或路由方法上。
以下是如何将 LoggerMiddleware
应用到所有路由的示例:
@Controller()
@UseMiddleware(LoggerMiddleware)
export class AppController {
@Get()
index() {
return 'Hello World!';
}
}
Nestjs 中间件最佳实践
- 尽量避免在中间件中做复杂的操作。如果操作太复杂,可以使用服务来代替。
- 尽量不要在中间件中返回数据。如果需要返回数据,可以使用服务来代替。
- 尽量使用
@UseMiddleware()
装饰器来应用中间件。不要在路由中直接使用中间件。
总结
中间件是一种非常有用的工具,可以用来处理一些通用的任务。Nestjs 中间件可以很容易地创建和使用。合理使用中间件可以使你的代码更加简洁和易于维护。