기술 용어를 잠시 내려놓고, NestJS 서버를 하나의 거대한 회사 건물이라고 상상해 보겠습니다.
NestJS 요청 라이프사이클을 미들웨어, 가드, 인터셉터, 파이프, 예외 필터 단계로 나누어 각 계층의 역할과 차이를 정리합니다.
2026. 3. 29.BackendNestJS Pipe로 입력 데이터를 변환하고 검증하는 방법을 내장 파이프, DTO 기반 ValidationPipe, 커스텀 파이프로 정리합니다.
2026. 3. 29.BackendNestJS에서 ValidationPipe로 요청을 역직렬화하고 ClassSerializerInterceptor로 응답을 직렬화하는 방법을 정리합니다.
2026. 3. 28.미들웨어는 요청(req)과 응답(res) 객체 사이에서 동작하는 함수입니다.
next()를 호출해 다음 단계로 넘기거나, 응답을 종료할 수 있습니다.가드는 미들웨어와 달리 실행될 메서드의 정보(Context)를 알고 있습니다.
canActivate()가 true일 때만 컨트롤러로 진입을 허용합니다.RxJS를 활용해 비동기 흐름을 제어하고 응답 데이터를 변형합니다.
컨트롤러 인자를 대상으로 변환(Transformation)과 검증(Validation)을 수행합니다.
ValidationPipe를 이용한 DTO 검증, ParseIntPipe를 이용한 형변환.| 구분 | Middleware | Guard | Interceptor | Pipe |
|---|---|---|---|---|
| 비유 | 건물 정문 보안 | 사무실 카드키 | 비서/안내 데스크 | 서류 검토인 |
| 주요 기술 | Express 함수 | NestJS 클래스 | RxJS (Observable) | DTO & Metadata |
| 핵심 역할 | HTTP 헤더 조작 | 인증/권한 부여 | 응답 가공/로깅 | 데이터 검증/변환 |
NestJS의 요청 라이프사이클을 이해한다는 것은 "책임의 분리"를 실천한다는 뜻입니다. 적절한 로직을 적절한 위치(미들웨어, 가드, 파이프 등)에 배치하면 코드는 자연스럽게 깨끗해지고 유지보수도 쉬워집니다.
각 단계의 존재 이유를 명확히 이해하고, 프로젝트에 맞는 파이프라인을 설계해 보시기 바랍니다.
참고 자료