안녕하세요~!!. 오늘은 지난 시간에 이어서 Nestjs의 미들웨어(middleware)에 대해 알아보는 시간을 갖도록 하겠습니다. 미들웨어는 클라이언트로부터 들어온 요청을 핸들러가 처리하기 이전에 코드를 실행할 수 있는 기능을 뜻합니다. (지난 시간에 비해 훨씬 구체적인 정의죠? ㅎ...) 또한 미들웨어 함수는 애플리케이션의 요청, 응답 주기에서 요청 및 응답 객체에 접근할 수 있으며 next()라는 미들웨어 함수를 사용할 수도 있습니다.
Nest 미들웨어는 지난 시간에 언급했던 express의 미들웨어와 거의 동의합니다. 한 가지 차이점이 있다면 Nest에서는 @Injectable() 데코레이터가 있는 클래스로도 구현할 수 있다는 것입니다. 그리고 이러한 클래스로 구현하려면 NestMiddleware 인터페이스를 구현해야 합니다. codesandbox로 구현을 하면 아래와 같이 코드를 작성할 수 있습니다. 지금까지 구현한 부분에서 살짝만 수정하고 추가하면 됩니다. (만약 express 라이브러리가 설치되어있지 않을 경우, 먼저 express 라이브러리를 설치해주시면 됩니다. yarn add express 혹은 npm i express를 통해 설치하면 됩니다.)
🎉./common/middleware/logger.middleware.ts
위의 코드는 요청을 받고 응답을 하기 전에, console.log를 통해 "Request..."이라는 문구를 출력하는 역할을 합니다. 그 다음에 응답을 주는 메서드를 호출하여 프로세스를 진행합니다.
🎉./app.module.ts
위의 코드는 "/cats"로 요청을 보낼 때, 중간에 LoggerMiddleware를 사용하여 중간 처리를 거친 다음에 메서드를 사용할 수 있도록 구현하였습니다. @Module 데코레이터는 따로 미들웨어를 설정할 수 있는 설정이 없기에 configure() 메서드를 사용하여 미들웨어를 사용할 수 있도록 별도의 조취를 해야합니다. 주어진 로컬 주소로 요청을 보내면, 요청을 보낼 때마다 terminal에 "Request..."이라는 문구가 뜨는 것을 확인할 수 있습니다. 이렇게 요청이 뜨면 제대로 작동하고 있다는 뜻입니다.
다음 장에서는 미들웨어의 다른 여러 기능에 대해 한번 더 자세히 설명하도록 하겠습니다 ㅎ
'Nestjs' 카테고리의 다른 글
[Nestjs] 7. Guard 🥊🥊 (0) | 2022.06.25 |
---|---|
[Nestjs] 6-2. 미들웨어의 여러 기능들 (0) | 2022.06.05 |
[Nestjs] 6. 미들웨어 (middleware) (0) | 2022.05.13 |
[Nestjs] 5-1. 공유 모듈 (shared modules) (0) | 2022.04.27 |
[Nestjs] 5. 모듈(Module)에 대하여... (0) | 2022.04.24 |