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);