var app = express();
// 라우터 레벨 미들웨어를 로드함. 
var router = express.Router();

// 미들웨어 함수는 어느 경로도 마운트하지않음. 
// 이 코드는 모든 요청에 실행함.
router.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});

// 미들웨어 서브스택은  `user/:id`  경로에 대한 모든 유형의 HTTP 요청에 
// 대한 '요청정보'(request info)를 보여줌
router.use('/user/:id', function(req, res, next) {
  console.log('Request URL:', req.originalUrl);
  next();
}, function (req, res, next) {
  console.log('Request Type:', req.method);
  next();
});

// 미들웨어 하위스택은 `user/:id` 경로에 대한 GET요청을 처리함.
router.get('/user/:id', function (req, res, next) {
// 만약 유저 아이디가 0이면, 다음 라우터로 넘긴다.
  if (req.params.id == 0) next('route');
// 달리말해, 통과한다면 스택의 다음 미들웨어 함수로 제어됨.
  else next(); //
}, function (req, res, next) {
// 페이지를 그린다. 
  res.render('regular');
});

// `/user/:id` 경로를 처리하고, special page를 렌더한다.
router.get('/user/:id', function (req, res, next) {
  console.log(req.params.id);
  res.render('special');
});

// 앱에 라우터를 마운트 한다. 
app.use('/', router);