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