본문 바로가기

Back-End/Node.js

Express - 페이지 라우팅

반응형

라우팅(Routing)

클라이언트로부터 요청받은 URL과 뷰(view)를 매칭시키는 것. 즉, 특정한 URL에 대해 특정한 뷰로 연결하는 역할을 한다.

이해를 돕기 위해 URL이라 표현했으나, 실제 라우팅에 사용되는 정보는 호스트 이름을 제외한 나머지 경로(Path)를 표시한 문자다. 즉 예를 들어 http://localhost:3000/hello/world 다음과 같은 URL로 접속하게 되면 라우팅 대상은 '/hello/world' 문자열이 된다.

 

app.get()

GET방식으로 들어오는 경로를 연결하여 이에 대응하는 동작을 콜백함수로 기술한다. 

app.get('/', function(req, res) {
   res.render('index.jade');
});

위의 경우, 지정된 경로는 '/'으로, 도메인 주소 외에 아무 경로도 추가하지 않았다. 따라서 웹 사이트의 루트(Root) 페이지로 연결한다.

콜백함수를 살펴보면, req는 요청 객체(Request Object), res는 응답 객체(Response Object)이다. 요청 객체에는 클라이언트에서 보낸 여러 정보가 포함되어 있다. 응답 객체는 우리가 클라이언트에게 응답을 보낼 객체인데, 위의 예제에서는 render()함수로 뷰를 렌더링한다. 렌더링할 내용은 Jade형식으로 표현된 뷰 파일인 index.jade이다.

app.post()

POST방식은 express configuration에서 bodyParser를 포함하여 요청 객체의 body 속성을 통해 클라이언트에서 HTML Form으로 작성한 데이터를 읽어올 수 있다.

app.post('/post', function(req, res) {
   res.render('write.jade', {
      id: req.body.id,
      name: req.body.name
});

이는 write.jade로 렌더링하면서 id, name이라는 HTML Form의 Item으로 넘어온 값을 전달하여 출력한다. 렌더링할 때 id, name 값이 Jade 템플릿 엔진을 통해 write.jade 파일에 넘겨지고, write.jade에는 이를 출력한다.

 

페이지 라우팅의 장점

라우팅을 유연하게 할 수 있다. ap.get, app.post의 첫 번째 매개변수에 특정 표현식을 사용할 수 있다.

기본적인 경로 표현식

app.get('/hello/:id', function(req, res) {
   var id = req.params.id;
   ...
});

위의 경우 https://localhost:3000/hello/world/로 요청 받았다면 req.params.id = 'world' 문자열이 들어간다.

정규 표현식

문자열에서 발견되는 특수한 규칙을 쉽게 찾을 수 있도록 수식화한 표준적인 표현식을 말한다.

app.get('\/hello\/(^\/]+)\/?', function(req, res) {
   var parameter = req.params[0];
   ...
});

이 경우도 https://localhost:3000/hello/world로 요청받았다고 하자. 특정한 이름을 설정하지 않았기 때문에 정보를 배열로 입력을 받는다. 따라서 req.params[0] = 'world' 문자열이 들어간다.

 

 

 

 

반응형