더북(TheBook)

6.4 Router 객체로 라우팅 분리하기

 

4.3절에서 라우터를 만들 때 요청 메서드와 주소별로 분기 처리를 하느라 코드가 매우 복잡했습니다. if문으로 분기하여 코딩하여 보기에도 좋지 않고 확장하기도 어려웠습니다. 익스프레스를 사용하는 이유 중 하나가 바로 라우팅을 깔끔하게 관리할 수 있다는 점 때문입니다.

app.js의 라우터 부분을 살펴봅시다.

app.js

...
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
...
app.use('/', indexRouter);
app.use('/users', usersRouter);
...

 

익스프레스 앱과는 app.use('/', indexRouter)app.use('/users', usersRouter)로 연결되어 있습니다. app.use를 사용하므로 라우터도 일종의 미들웨어라고 볼 수 있습니다. 다른 미들웨어와는 다르게 앞에 주소가 붙어있습니다. 이와 같이 라우팅 미들웨어는 첫 번째 인자로 주소를 받아서 특정 주소에 해당하는 요청이 왔을 때만 미들웨어가 동작하게 할 수도 있습니다. 주소가 /로 시작하면 routes/index.js를, /users로 시작하면 routes/users.js를 호출하라는 의미입니다.

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