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

推荐答案

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

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

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

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

本题详细解读

1. 创建中间件

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

-- -------------------- ---- -------
------ - ----------- -------------- - ---- -----------------
------ - -------- --------- ------------ - ---- ----------

-------------
------ ----- ---------------- ---------- -------------- -
  -------- -------- ---- --------- ----- ------------- -
    --------------------------
    -------
  -
-

2. 注册中间件

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

-- -------------------- ---- -------
------ - ------- ------------------- ---------- - ---- -----------------
------ - ---------------- - ---- ----------------------
------ - -------------- - ---- -------------------------

---------
  ------------ -----------------
--
------ ----- --------- ---------- ---------- -
  ------------------- ------------------- -
    --------
      ------------------------
      -------------------
  -
-

3. 应用中间件

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

4. 排除特定路由

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

5. 全局中间件

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

-- -------------------- ---- -------
------ - ----------- - ---- ---------------
------ - --------- - ---- ---------------
------ - ---------------- - ---- ----------------------

----- -------- ----------- -
  ----- --- - ----- ------------------------------
  --------------------------
  ----- -----------------
-
------------

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

纠错
反馈