custom decorator

커스텀 데코레이터는 요청 문맥에서 필요한 값만 꺼낸다

컨트롤러가 req 전체를 알 필요가 없을 때 createParamDecorator로 필요한 값만 추출해 매개변수로 전달한다.

목표: req.user → @User()반복 추출 코드를 의도 있는 매개변수로 바꾼다.

전후 비교로 보는 핵심 차이

before반복 추출

각 핸들러가 req를 직접 받아 user를 꺼내면 의도가 흐려진다.

getMe(@Req() req) { return req.user }
after선언적 매개변수

핸들러 시그니처만 봐도 인증 사용자 정보가 필요하다는 뜻이 보인다.

getMe(@User() user: AuthUser)

커스텀 데코레이터 기본 흐름

1Request

인증 가드나 미들웨어가 req에 문맥을 넣는다.

2Factory

createParamDecorator 콜백이 ExecutionContext를 받는다.

3Extract

req.user, header, session 중 필요한 값만 고른다.

4Parameter

컨트롤러 매개변수에 깔끔하게 주입된다.