我来自tornado,在这里有一个requesthandler类,您可以匹配查询以将其定向到正确的requesthandler。
在node.js中如何操作?像那样???是吗?
http=require ('http');
url=require('url')
function case1(request,response){ ... }
function case2(request,response){ ... }
http.createServer(function(request, response) {
var q=url.parse(request.url, true).query
switch(true){
case /friend/.test(q):
case1(request,response);
return;
case /foes/.test(q):
case2(request,response);
return;
}
}).listen(9999)
最佳答案
使用node.js'http.Server
,您可以自行建立任何路由。
而且,你已经接近这个了。不过,您需要基于解析的urlpathname
而不是query
进行测试。
var pathname = url.parse(request.url, true).pathname;
switch (true) {
case /\/friend/.test(pathname):
case1(request, response);
break;
case /\/foes/.test(pathname):
case1(request, response);
break;
}
您可能还需要包括测试
request.method
。case request.method === 'GET' && /\/friend/.test(pathname):
或者,正如soulcheck所提到的,有numerous libraries/framework available具有用于路由的已建立api,包括express和restify。
var app = express();
app.get('/friend', case1);
app.get('/foes', case2);