返回

Nestjs 中间件简析,保姆级教程,轻松玩转!

前端

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 中间件可以很容易地创建和使用。合理使用中间件可以使你的代码更加简洁和易于维护。