NestJS · Decorator

커스텀 데코레이터로 요청 문맥 추출하기

커스텀 데코레이터는 코드를 멋지게 줄이는 도구가 아니라, controller가 request 객체 전체를 알지 않고 필요한 문맥만 받게 만드는 경계다.

01

반복 식별

여러 controller에서 req.user, tenantId, locale을 직접 읽는 패턴을 찾는다.

02

추출 정의

createParamDecorator로 ExecutionContext에서 필요한 값만 반환한다.

03

정책 결합

권한 metadata는 SetMetadata나 custom decorator로 handler에 붙인다.

04

실패 처리

문맥이 없을 때 undefined를 넘길지 예외를 던질지 결정한다.

CurrentUser
인증 사용자 guard가 붙인 request.user를 controller param으로 전달
guard 선행 필요
Tenant
조직 범위 header, subdomain, token claim에서 tenantId 추출
권한 검증과 연결
Roles
metadata handler에 필요한 role 정보를 선언적으로 부착
guard가 읽어 판정
Context
transport 추상화 HTTP와 WS에서 다른 방식으로 문맥을 읽음
범용 decorator는 조심

의존 · 범위 · 실패 점검

의존 decorator가 필요한 guard/interceptor 선행 조건을 문서화한다.
범위 request 전체를 controller에 넘기는 대신 필요한 값만 넘긴다.
실패 문맥 누락 시 동작이 명확하다.
테스트 ExecutionContext mock으로 추출 결과를 검증한다.