在Node.js中,路由是处理不同URL请求的关键部分。你已经有了一个基本的服务器和路由框架,现在让我们来扩展这个路由功能,使其能够根据请求的URL路径来调用不同的处理函数。
首先,我们需要修改server.js
文件,以便它能够使用router.js
中定义的路由逻辑。然后,我们将在router.js
中添加逻辑来处理不同的路径。
修改 server.js
我们将在server.js
中引入router.js
,并根据请求的路径调用不同的处理函数。
var http = require("http");
var url = require("url");
var router = require("./router"); // 引入router模块
function start() {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
// 使用router模块来处理请求
router.route(pathname, request, response);
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
修改 router.js
在router.js
中,我们将定义不同的处理函数,并根据路径名调用它们。
function route(pathname, request, response) {
console.log("About to route a request for " + pathname);
switch(pathname) {
case "/start":
startRoute(response);
break;
case "/upload":
uploadRoute(request, response);
break;
default:
notFoundRoute(response);
}
}
function startRoute(response) {
response.writeHead(200, {
"Content-Type": "text/plain"});
response.write("Hello World! This is the start page.");
response.end();
}
function uploadRoute(request, response) {
// 这里可以添加处理上传逻辑
response.writeHead(200, {
"Content-Type": "text/plain"});
response.write("Hello World! This is the upload page.");
response.end();
}
function notFoundRoute(response) {
response.writeHead(404, {
"Content-Type": "text/plain"});
response.write("404 Not Found");
response.end();
}
exports.route = route;