더북(TheBook)

6.3 미들웨어

 

미들웨어는 익스프레스의 핵심입니다. 요청과 응답의 중간(middle, 미들)에 위치하여 미들웨어라고 부릅니다. 뒤에 나오는 라우터와 에러 핸들러 또한 미들웨어의 일종이므로 미들웨어가 익스프레스의 전부라고 해도 과언이 아닙니다. 미들웨어는 요청과 응답을 조작하여 기능을 추가하기도 하고, 나쁜 요청을 걸러내기도 합니다.

미들웨어는 주로 app.use와 함께 사용됩니다. 먼저 app.use의 역할에 대해 알아봅시다. app.js를 보면 수많은 use 메서드가 사용되고 있습니다.

app.js

...
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// 404 처리 미들웨어
app.use(function(req, res, next) {
  next(createError(404));
});

// 에러 핸들러
app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') ==='development' ? err : {};

  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.