요청 처리 흐름
NestJS 요청 처리 단계
미들웨어, 가드, 인터셉터, 파이프는 비슷해 보이지만 실행 위치와 책임이 다르다. 어느 단계에서 막거나 바꿀지를 먼저 정하면 선택이 쉬워진다.
Middleware
가장 앞에서 로깅, CORS, 세션처럼 요청 공통 처리를 수행한다.
Guard
컨트롤러 실행 전에 인증과 권한 조건을 확인하고 접근을 막을 수 있다.
Interceptor Before
핸들러 실행 전후를 감싸 로깅, 캐싱, 트랜잭션 경계를 만든다.
Pipe
핸들러 인자 직전에 변환과 유효성 검사를 수행한다.
Controller
라우트 핸들러가 서비스 호출 등 실제 요청 처리를 수행한다.
Interceptor After
반환 데이터를 감싸거나 응답 형식을 통일한다.
요청 전체: 모든 요청에 공통이면 미들웨어가
자연스럽다.
접근 여부: 사용자 역할과 토큰 검사는 가드가
담당한다.
입력 값: DTO 검증과 문자열 숫자 변환은 파이프가
담당한다.
응답 형태: 성공 응답 래핑이나 캐싱은 인터셉터가
담당한다.