Nest JS 中间件 .exclude 选项不会阻止排除路由的中间件

我正在尝试排除中间件的一些路由。 .exclude 选项不起作用。相反,中间件也适用于排除的路由

这是 Middleware enter image description here 的代码

这是 User Module enter image description here 的代码

这是 用户控制器 enter image description here 的代码

我想我的代码应该阻止“用户” GET 路由的中间件......但它允许中间件用于被阻止的路由。

stack overflow Nest JS middleware .exclude option is not blocking the middleware for excluded routes
原文答案

答案:

作者头像

添加前缀以排除路由路径应该可以解决您的问题。

在下面的示例中,我定义了一个全局前缀 ('/api/v1'),所以现在当您想要排除一个路由时,应用程序会将完整路径(包括所有前缀)写入该路由:

export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer);

  {consumer
    .apply(LoggerMiddleware)
    .exclude(
      // 'api/v1' prefix to that route
      { path: 'api/v1/user', method: RequestMethod.POST },
    )
    .forRoutes(UserController);
  }
};