Search code examples
moduleroutesnestjsmiddleware

Apply middleware to NestJs route method


I have my NestJs module set up as:

@Module({
  controllers: [MyController],
})
export class MyModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(MyMiddleware)
      .forRoutes('/myRoute');
  }
}

How do I apply MyMiddleware to only GET /myRoute but not POST /myRoute?


Solution

  • As the docs show something like this should do:

    @Module({
      controllers: [MyController],
    })
    export class MyModule implements NestModule {
      configure(consumer: MiddlewareConsumer) {
        consumer
          .apply(MyMiddleware)
          .forRoutes({ path: '/myRoute', method: RequestMethod.GET });
      }
    }