// server.jsconst usersRouter =require('./routes/users.route');// server.js 파일에 경로에 따른 라우터 등록하기
app.use('/users', usersRouter);// "/users"로 시작하는 요청이 오면 users.route 파일로 보내기
1-4. Router와 middleware
- url이 제대로 출력 안 되는 문제
미들웨어는 한 번 통과 후, 응답하기 전 한 번씩 미들웨어를 다시 통과함
따라서 메서드, url, 걸린 시간 로그를 확인하는 미들웨어를 생성했었음
문제는 Router 사용 시, 로그 측정 미들웨어를 처음 통과할 때는 url이 제대로 출력되지만, 다시 통과하게 되면 url이 제대로 출력되지 않음
// server.jsconst express =require('express');const usersRouter =require('./routes/users.route');constPORT=4000;
app.use(express.json());// 메서드, url, 걸린 시간 로그 측정 미들웨어
app.use((req, res, next)=>{const start = Date.now();// 현재 시간 start
console.log(`start : ${req.method}${req.url}`);next();// 미들웨어 통과함// 아래는 다시 한번 더 통과할 때 수행됨const diffTime = Date.now()- start;// 최초 통과에서 다시 통과할 때까지 걸린 시간
console.log(`end : ${req.method}${req.url}${diffTime}ms`);});
app.use('/users', usersRouter);// 출력// start : GET /users// end : GET / 7ms --> url이 제대로 출력이 안 됨
- baseUrl로 해결
req.url이 아닌 req.baseUrl(라우터 인스턴스가 마운트된 URL 경로)을 함께 사용해야 함
// server.js// ...
app.use((req, res, next)=>{const start = Date.now();
console.log(`start : ${req.method}${req.url}`);next();const diffTime = Date.now()- start;
console.log(`end : ${req.method}${req.baseUrl}${req.url}${diffTime}ms`);});//...// 출력// start : GET /users// end : GET /users 7ms --> 다시 제대로 출력 됨