request extraction

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

데코레이터를 설계할 때는 어떤 요청 문맥을 숨길지, 어떤 이름으로 컨트롤러에 드러낼지, 검증은 어디에서 할지 함께 정한다.

설계 순서: 문맥 선택 → 이름 부여 → 검증 연결값을 꺼내는 코드가 아니라 API 문법을 만드는 작업이다.

데코레이터 제작 체크 순서

1Name

@CurrentUser, @TenantId처럼 업무 의미가 있는 이름을 고른다.

2Source

req.user, headers, params, session 중 출처를 한정한다.

3Shape

전체 객체 또는 특정 필드 중 무엇을 넘길지 정한다.

4Pipe

필요하면 ParseIntPipe나 ValidationPipe와 같이 쓴다.

5Fallback

값이 없을 때 undefined, 기본값, 예외 중 하나를 정한다.

요청 문맥 추출 예시

데코레이터출처컨트롤러에서 보이는 의미
@CurrentUser()req.user인증된 사용자 전체
@CurrentUser("id")req.user.id사용자 식별자만 사용
@TenantId()header 또는 token claim멀티테넌트 경계
@Locale()Accept-Language응답 언어 선택