본문 바로가기

Programming/Node.js

7. 익스프레스 (2) - Router 객체를 통한 라우팅 2

node js logo image

 

 

 

 

앞선 아티클에서 next 함수를 사용하게 되면, 다음 라우터로 넘어가게 된다는 기능이 있다고 설명했습니다. 이는 정확히 next('route') 기능입니다. 이를 사용하게 되면, 라우터에 연결된 나머지 미들웨어들을 건너뛰게 됩니다. 아래 예시를 보겠습니다. 

 

router.get('/', (req, res, next) => {
    next('route');
}, (req, res, next) => {
    console.log('실행 안됨');
    next();
}, (req, res, next) => {
    console.log('실행 안됨');
    next();
});

router.get('/', (req, res) => {
    console.log('실행됨');
    res.send('Hello EXPRESS');
});

 

위의 케이스처럼, 같은 주소의 라우터를 여러 개 작성해도 됩니다. 라우터의 개수가 몇 개든 간에 next( )를 호출할 경우, 다음 미들웨어가 실행됩니다. 위 예제에서 첫 미들웨어는 next( )가 아닌 next('route')를 실행했습니다. 이 때는 주소와 일치하는 다음 라우터로 넘어가게 됩니다. 

 

 


 

 

 

○ 라우터 매개변수 패턴

 

라우터 패턴 중 라우트 매개변수 패턴을 살펴보겠습니다. 여러 패턴 중 자주 쓰이는 패턴입니다. 아래 형식을 예제로 보겠습니다. 

 

router.get('/user/:id', (req, res) => {
    console.log(req.params, req.query);
});

 

 

위의 주소 :id는 문자 ':id'를 의미하는 것이 아니라 다른 값을 넣을 수 있는 파라미터를 의미합니다. 예를 들어서 /user/1, 또는/user/123의 요청도 이 라우터가 처리하게 됩니다. 

 

이 방식을 사용하게 되면 :id에 해당하는 1이나 123을 조회할 수 있는데, 이는 req.params 객체에 들어있습니다. 만일 :id일 경우에는 req.params.id로, type이면 req.params.type으로 조회할 수 있습니다. 

 

라우터 매개변수 패턴은 다음 아티클에서 이어서 살펴보도록 하겠습니다.