최소 라이브러리만 가지고 접근
require('http').createServer(function(req,res) {
console.log(req.url, req.method);
res.end(req.url+":"+req.method);
}).listen(3000);
# coffee
require('http').createServer((req,res)-> res.end "#{req.url}:#{req.method}").listen 3000
Router를 만들자.
if 나 switch 를 쓰는 것보다 object를 이용하자.
해당 패턴이 있으면 쓰고 없으면 404 처리를 하자.
var router={
"/": function() {
return "home";
},
"/list": function() {
return "list";
},
"404": function() {
return "not found";
}
}
require('http').createServer(function(req,res) {
res.end(router[router[req.url] && req.url || "404"]());
}).listen(3000);
# coffee
router =
"/": -> "home"
"/list": -> "list"
"404": -> "not found"
require('http').createServer((req, res) ->
res.end router[router[req.url]? and req.url or '404']()
).listen 3000
만일 Async가 있다면?
require('http').createServer(function(req,res) {
console.log(req.url, req.method);
res.end(req.url+":"+req.method);
}).listen(3000);
# coffee
require('http').createServer((req,res)-> res.end "#{req.url}:#{req.method}").listen 3000
Router를 만들자.
if 나 switch 를 쓰는 것보다 object를 이용하자.
해당 패턴이 있으면 쓰고 없으면 404 처리를 하자.
var router={
"/": function() {
return "home";
},
"/list": function() {
return "list";
},
"404": function() {
return "not found";
}
}
require('http').createServer(function(req,res) {
res.end(router[router[req.url] && req.url || "404"]());
}).listen(3000);
# coffee
router =
"/": -> "home"
"/list": -> "list"
"404": -> "not found"
require('http').createServer((req, res) ->
res.end router[router[req.url]? and req.url or '404']()
).listen 3000
router = {
"/" : function(act) {
return function() {
act("hello home");
};
},
"/list": function(act) {
return function() {
setTimeout(function() {
act("list");
}, 1000);
};
},
"404": function(act) {
return function() {
act("not found");
};
}
};
http.createServer(function(req, res) {
router[router[req.url] && req.url || "404"](function(body) {
res.end(body);
})();
}).listen(3000);
# coffee
router =
'/': (act) ->
-> act 'hello home'
'/list': (act) ->
-> setTimeout (->
act 'list'
), 1000
'404': (act) ->
-> act 'not found'
http.createServer((req, res) ->
router[router[req.url]? and req.url or '404']((body) ->
res.end body
)()
).listen 3000
마지막에 res.end 를 해야하므로 최종적으로 비동기 작업을 끝내고 res.end를 하도록 함수를 리턴해야한다.
/list/:id 와 같은 패턴 매칭을 하려면?
/list/:id 와 같은 패턴 매칭을 하려면?
params="/list/:id".match(/:([^\/]+)/g).map(v=>v.substr(1))
이런 식으로 접근해서 인자명을 뽑아둔다.
패턴을 생각해보자.
테스트는 이렇게 해본다.
웹브라우저에서도 해볼 수 있지만
$ curl localhost:3000/list
이렇게 하거나 curl 이 없으면
$ telnet localhost 3000
혹은
$ nc localhost 3000
을 실행하여
GET /list
입력 후 엔터 두번 해준다.
댓글
댓글 쓰기