# Middleware — NestJS

Source: https://www.geekswithgeeks.com/en/nestjs/nestjs-middleware

> Intercept and process requests before they reach controllers.

## Write middleware

Middleware is a function or class that runs before/after a route handler.

```typescript
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.log(`${req.method} ${req.path}`);
    next();
  }
}
```

## Apply middleware

Apply in `configure()` method of a module, specifying routes to intercept.

```typescript
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(LoggerMiddleware)
      .forRoutes('users'); // or use { path: 'users', method: RequestMethod.GET }
  }
}
```
