我正在尝试简化一些Web服务器代码(Node.js和Express),为了简单起见,我只想使用一个app.get语句。我试过这个:
app.get(url, function(req, res){
switch(url){
case "/":
res.sendfile('index.html');
res.writeHead(200, {"Content-Type": "text/plain"});
console.log("Client requested /");
break;
case "/profile":
res.sendfile('profile.html');
res.writeHead(200, {"Content-Type": "text/plain"});
console.log("Client requested /profile");
break;
default:
res.sendfile('404.html');
res.writeHead(404, {"Content-Type": "text/plain"});
console.log("Client requested page not found - 404 error");
}
});
但它引发了“引用错误:url未定义”错误。我是否真的需要将每个可能请求的URL编码为第一个参数的字符串文字,并且有多个app.get语句,或者有没有办法使用switch case或类似的东西?
答案 0 :(得分:0)
您可以执行基于地图的查找来映射网址和资源。使用app.use
将其打包在中间件中。
app.use(function(req, res){
routes = {
'/': 'index.html',
'/profile': 'profile.html'
};
var url = req.url;
if (routes[url] !== undefined) {
res.writeHead(200, {"Content-Type": "text/plain"});
res.sendfile(route[url]);
console.log("Client requested", url);
} else {
res.writeHead(404, {"Content-Type": "text/plain"});
res.sendfile('404.html');
console.log("Client requested page not found - 404 error");
}
});