我知道那里有很多 Node JS 路由器框架,但我试图从一开始就学习这个概念,而不是重用代码。简而言之,我极其简单的路由器正在部分工作,但有一些问题。这是代码。
function serverStart(urlRoute) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request received for " + pathname + ".");
urlRoute(pathname, request, response);
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started." );
}
路由器代码:
function urlRoute(pathname, req, res) {
console.log(pathname)
switch(pathname) {
case '/':
console.log("Request for path '/'");
res.writeHead(200, {"Content-Type": "text/plain"});
res.write("In Index!");
case '/start':
console.log("Request for path '/start'");
res.writeHead(200, {"Content-Type": "text/plain"});
res.write("In Start!");
case '/foo':
console.log("Request for path '/foo'");
res.writeHead(200, {"Content-Type": "text/plain"});
res.write("In Foo!");
default: // Default code IS working
console.log("404");
res.writeHead(404, {"Content-Type": "text/plain"});
res.write("Default 404");
}
}
默认和/或 404 部分可以正常工作,但其他部分不能。基本上,如果我请求索引页“/”,所有 case 语句都会触发,类似地,下一个 case 会自行触发以及它下面的所有内容。因此,“/foo”触发“foo”并将 404 写入控制台,但我没有得到 404 页面(当然,除非我完全使用了错误的 URL)。
试图理解为什么这个案子似乎表现得不正常。任何帮助,将不胜感激!