首页 > 代码库 > node.js-------路由后添加处理函数
node.js-------路由后添加处理函数
路由,就是不同的URL有不同的处理方式,例如/start的“业务逻辑”和/upload的不同。
在现在的现实下,路由过程会在路由模块中“结束”,并且路由模块并不是真正针对请求采取行动的处理程序模块,所以,当处理程序变更时,需要修改的内容不用涉及到路由。
通常在请求处理程序就绪的时候设置路由。
当应用程序需要新的部件,就需要加入新的模块。可以创建一个requestHandlers的模块,并对每一请求处理程序,添加一个占位函数,随后这些占位函数作为模块导出。
下面是一个例子:
------requestHandlers.js
------router.js
------server.js
------index.js
requestHandlers.js
/*requestHandlers.js模块,对每一个请求处理程序添加一个占位函数,最后将这些方法作为模块导出*/function start(){ console.log("Request handler ‘start‘ was called.");}function upload(){ console.log("Request handler ‘upload‘ was called.");}exports.start = start;exports.upload = upload;
router.js
/*router模块*//*检查URL中给定路径对应的请求处理程序是否存在,如果存在直接调用相应函数*/function route(handle, pathname){ console.log("About to route a request for" + pathname); if(typeof handle[pathname] === ‘function‘){ handle[pathname](); }else{ console.log("No request handler found for" + pathname); }}exports.route = route;
server.js
/*server模块*//*请求处理模块,从URL中取出路径,并交由router.js检查这个路径有没有对应的处理函数*/var http = require("http");var url = require("url");function start(route, handle){ function onRequest(request, response){ var pathname = url.parse(request.url).pathname; console.log("Request for" + pathname + "received"); route(handle, pathname); //在这里就可以对不同的路径进行不同的处理 //if(pathname=="...") response.writeHead不同的信息之类的 if(pathname=="/"){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("pathname: /"); response.end(); } if(pathname=="/start"){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("pathname: /start"); response.end(); } if(pathname=="/upload"){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("pathname: /upload"); response.end(); } } http.createServer(onRequest).listen(3000); console.log("Server has started"); }
index.js
/*index 模块*//*启动模块,主模块,handle集合对象里面,是pathname与处理函数组成的数组元素集合,这个集合也是router.js里面进行检查的依据*/var server = require("./server");var router = require("./router");var requestHandlers = require("./requestHandlers");var handle = {}handle["/"] = requestHandlers.start;handle["/start"] = requestHandlers.start;handle["/upload"] = requestHandlers.upload;server.start(router.route,handle);
控制台启动应用:
node index.js
在浏览器输入以下URL请求:
http://127.0.0.1:3000
控制台显示:
浏览器显示:
在浏览器输入以下URL请求:
http://127.0.0.1:3000/start
控制台显示:
浏览器显示:
在浏览器输入以下URL请求:
http://127.0.0.1:3000/upload
控制台显示:
浏览器显示:
在浏览器输入以下URL请求:
http://127.0.0.1:3000/start1
控制台显示:
node.js-------路由后添加处理函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。