본문 바로가기

Programming/Node.js

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

node js logo image

 

 

 

 

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

 

 

 

○ 라우터 매개변수 패턴

 

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

 

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으로 조회할 수 있습니다. 

 

단, 주의할 점은 해당 패턴은 다양한 라우터를 아우르는 와일드카드 역할을 한다는 점 입니다. 즉, 다른 일반 라우터보다 반드시 뒤에 위치해야 합니다. 앞에 위치할 경우 다른 라우터가 실행되지 않게 되죠. 

 

router.get('/user/:id', (req, res) => {
    console.log('이것만 실행됨');
});
router.get('/user/like', (req, res) => {
    console.log('실행 안됨');
});

 

 

요청 주소에 쿼리스트링을 사용할 때도 있습니다. 쿼리스트링의 K-V 정보는 req.query 객체에 들어가게 됩니다. 만일, /user/123?limit=5&skip=10 이라는 주소의 요청이 들어왔을 때, req.params와 req.query 객체는 { id: '123' } / {limit: '5', skip: '10' } 이 됩니다.