미들웨어 특성
next() 호출해서 다음 미들웨어로 넘어가거나
next("route") => 다음 라우터
next(error) => 에러 핸들러로 직행
res.send() or res.sendFile()등의 메소드로 응답을 보내야함
처리 안할 시 응답시간 초과 메시지 발생 (클라이언트 응답 없음 처리 될 가능성 있음)
app.use((req, res, next) => {
console.log('모든 요청에 다 실행됩니다.');
next();
});
1-1. 다중 미들웨어
app.use((req, res, next) => {
console.log('모든 요청에 다 실행됩니다.');
next();
},(req, res, next) => {
console.log('모든 요청에 다 실행됩니다.');
next();
},(req, res, next) => {
console.log('모든 요청에 다 실행됩니다.');
next();
});
app.use("/abc", (req, res, next) => {
console.log('/abc 요청에 실행됩니다.');
next();
});
(error, req, res, next) => {
console.log('error가 발생되면 실행됩니다.');
next();
});
app.use((req, res, next) => {
res.locals.data = '데이터 넣기';
next();
}, (req, res, next) => {
console.log(res.locals.data); // 데이터 받기
next();
});
app.use(morgan('dev'));
// 또는
app.use((req, res, next) => {
morgan('dev')(req, res, next);
});
or
// 조건별
app.use((req, res, next) => {
if (process.env.NODE_ENV === 'production') {
morgan('combined')(req, res, next);
} else {
morgan('dev')(req, res, next);
}
});