Nest.js 中如何在路由中应用中间件?

· 约 4 分钟读完 · 第 58 / 144 章

推荐答案

在 Nest.js 中,可以通过以下步骤在路由中应用中间件:

  1. 创建中间件:首先,使用 @nestjs/common 中的 MiddlewareConsumer 和 NestMiddleware 接口来创建自定义中间件。

  2. 注册中间件:在模块中使用 MiddlewareConsumer 的 apply 方法来注册中间件,并通过 forRoutes 方法指定应用中间件的路由。

  3. 应用中间件:在 configure 方法中配置中间件,使其在特定路由上生效。

本题详细解读

1. 创建中间件

首先,创建一个自定义中间件类。这个类需要实现 NestMiddleware 接口,并实现 use 方法。

2. 注册中间件

在模块中,使用 MiddlewareConsumer 来注册中间件。MiddlewareConsumer 提供了 apply 方法来指定中间件,并通过 forRoutes 方法指定应用中间件的路由。

3. 应用中间件

在上面的代码中,LoggerMiddleware 被应用到了 CatsController 的所有路由上。你也可以通过传递控制器类来指定更具体的路由。

4. 排除特定路由

如果你希望在应用中间件时排除某些路由,可以使用 exclude 方法。

5. 全局中间件

如果你希望中间件在所有路由上生效,可以在 main.ts 中使用 app.use 方法。

通过以上步骤,你可以在 Nest.js 中灵活地应用中间件到特定的路由或全局范围内。