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
컨트롤러 매개변수에 깔끔하게 주입된다.