...
미들웨어 확장법
미들웨어 안에 미들웨어를 넣는 방법으로
조건에 따라 다른 미들웨어를 적용하는 패턴이다.
app.use(morgan('dev')); // 보통 이렇게 바로 app.use()에 미들웨어를 넣어서 사용하지만
// app.use()의 콜백 함수 내에 미들웨어를 넣는 방법을 일컫는다.
app.use((req, res, next) => {
morgan('dev')(req, res, next);
})
이때, 미들웨어에 함수호출 인자를 명시해주는데,
원리는 간단하다.
예를들어, app.use(morgan('dev'))의 인자 함수 부분 morgan('dev')도 사실 메소드 내부 내에서 위 사진 처럼 함수 인자를 전달받아 콜백 함수 호출이 이루어 진다.
이 원리를 이용해서 (req, res, next) => { ... } 콜백 함수 부분 안에다 미들웨어를 사용할때 직접 함수 인자를 붙여주는 것이다.
이렇게 번거롭게 사용하는 이유는, 조건식을 붙여서 조건에 따른 미들웨어를 적용 할 수 있기 때문이다.
app.use((req, res, next) => {
// 만일 환경변수가 production이면 morgan('combined') 미들웨어 사용
if (precess.env.NODE_ENV === 'production') {
morgan('combined')(req, res, next);
}
else { // 만일 환경변수가 production이 아니면 morgan('dev')로 미들웨어 사용
morgan('dev')(req, res, next);
}
})
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.