728x90
반응형
이 포스트는 전 포스트에서 이어집니다.
https://docs.nestjs.kr/middleware
Nest 미들웨어는 기본적으로 express 미들웨어와 동일하다.
- 모든 코드를 실행하십시오.
- 요청 및 응답 객체를 변경합니다.
- 요청-응답주기를 종료합니다.
- 스택의 next 미들웨어 함수를 호출합니다.
- 현재 미들웨어 함수가 요청-응답주기를 종료하지 않으면 next()를 호출하여 next 미들웨어 기능에 제어를 전달합니다. 그렇지 않으면 요청이 중단됩니다.
Request가 들어올 때 로그로 확인하기 위한 미들웨어를 작성해보자.
/src/common/middleware/logger.middleware.ts
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('Request...');
next();
}
}
app.module에서 전 포스트에서 작성한 UserModule을 import하고 다음과 같이 수정하자.
app.module.ts
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';
import { LoggerMiddleware } from './common/middleware/logger.middleware';
@Module({
imports: [UserModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware)
.forRoutes('user');
}
}
이제 Swagger에서 요청을 보내보자.
콘솔을 확인해보면 미들웨어에서 작성한 내용이 잘 뜨는 것을 확인할 수 있다.
미들웨어에서 한 번 들어온 데이터를 검증하고 next()로 넘길 수 있다.
( 토큰이나 쿠키를 확인하는 것 등)
logger.middleware.ts
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.body)
next();
}
}
swagger로 요청을 보내보면
잘 확인되는 것을 볼 수 있다.
참고로 이렇게 예외 상황도 만들 수 있다.
consumer
.apply(LoggerMiddleware)
.exclude(
{ path: 'cats', method: RequestMethod.GET },
{ path: 'cats', method: RequestMethod.POST },
'cats/(.*)',
)
.forRoutes(CatsController);
728x90
반응형
'Back-End > Nest.js' 카테고리의 다른 글
Nest.js | Swagger (0) | 2021.10.28 |
---|---|
Nest.js | MongoDB | PATCH and DELETE (0) | 2021.10.06 |
Nest.js | MongoDB | Create (0) | 2021.10.06 |
Nest.js | MongoDB | Find (0) | 2021.10.06 |
Nest.js | MongoDB | Model,Schema,Controller (0) | 2021.10.06 |