본문 바로가기

Javascript/Node.js

라우팅 (Routing)

반응형

라우팅

라우팅 기본 (요청에 따른 매핑)

1
2
3
4
5
6
7
8
9
10
11
12
var express = require("express");
var app = express();
 
app.get("/about",function(request,response){
  response.send("Welcome to myPage");
});
 
app.use(function(request,response){
  response.status(404).send("page not found");
});
 
app.listen(3000);


위 처럼 HTTP요청(/about 에 대한 HTTP GET)에 응답하는 애플리케이션을 만들 수 있다.

이는 /about에 대한 get요청이 아닌 경우 무시한다.


라우트에 대한 매개변수 얻기

1
2
3
4
app.get("users/:userid",function(request,response){
  var userId = parseInt(request.params.userid, 10);
    //...
})


만약 사용자 아이디가 숫자고 사용자 프로필페이지를 /users/1, /users/2, users/3 이런식으로 제공한다면,

위와 같이 코딩하여 파라미터(매개변수)를 받을 수 있다.

하나하나 매핑하는 것보다 조금 수월해졌지만 원치않는 /users/hello, /users/book 이 매칭될 수 있다.

따라서 좀더 구체적인 매핑을 해야한다.

* parseInt를 하는 이유는 URL에서 가져올 때 문자열로 가져오기 때문.


정규표현식을 이용한 라우트

1
2
3
4
app.get(/^\/users\/(\d+)$/,function(req,res){
  var userId = parseInt(req.params[0], 10);
  //...
});


정규표현식은 공부해보면 조금 까다롭지만 이런식으로 표현이 가능하다.

/users/ 에 숫자가 올 때로 지정했다.

나중에 적용하고 일단은 이런게 가능하다만 알고 넘어가기.


라우트 쿼리 인수 얻기

구글에서 javascript-themed burrito 를 검색하면 URL은

http://www.google.com/search?q=javacript-themed%20burrito

이렇게 나온다. 여기서 search?~~~가 쿼리문자열이다.

1
2
3
4
app.get("/search",function(req,res){
    // req.query.q == "javascript-themed burrito"
    //...
});


이렇게 받을 수 있지만, 만약 "?arg=something"으로 방문하면 req.query.arg 로 작성해야하고

"?arg=something&?arg=somethingelse"로 방문하면 req.query.arg는 배열이 된다.

이 문제는 나중에 해결하고 여기서는 쿼리에서 인수를 뽑아쓸 수 있다만 알고 넘어간다.

반응형