轻松创建nodejs服务器(4):路由
服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤。
第一步我们需要先解析出请求URL的路径,我们引入url模块。
我们来给onRequest()函数加上一些逻辑,用来找出浏览器请求的URL路径:
var http = require("http"); var url = require("url"); function start() { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;
好了,pathname就是请求的路径,我们可以用它来区别不同请求了,这样一来我们就可以对来自/start和/upload的请求使用不同的代码来处理。
接着我们来编写路由,建立一个名为router.js的文件,代码如下:
function route(pathname) { console.log("About to route a request for " + pathname); } exports.route = route;
这段代码什么都没干,我们先把路由和服务器整合起来。
我们接着扩展服务器的start()函数,在start()中运行路由函数,并将pathname作为参数传给它。
var http = require("http"); var url = require("url"); function start(route) { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); route(pathname); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;
同时,我们会相应扩展index.js,使得路由函数可以被注入到服务器中:
var server = require("./server"); var router = require("./router"); server.start(router.route);
运行index.js,随便访问个路径,比如/upload,就会发现控制台输出,About to route a request for /upload.
这就意味着我们的HTTP服务器和请求路由模块已经可以相互交流了。
下一节我们将实现针对不同的URL请求给予不同的反馈。
轻松创建nodejs服务器(5):事件处理程序
为了对不同请做出不同的反馈,我们引入一个事件处理器的模块。该模块命名为requestHandlers,我们先添加start()和upload()两个占位函数。requestHandlers.js代
轻松创建nodejs服务器(6):作出响应
我们接着改造服务器,让请求处理程序能够返回一些有意义的信息。我们来看看如何实现它:1、让请求处理程序通过onRequest函数直接返回(return())他
轻松创建nodejs服务器(9):实现非阻塞操作
我们要将response对象(从服务器的回调函数onRequest()获取)通过请求路由传递给请求处理程序。随后,处理程序就可以采用该对象上的函数来对请求作出
编辑:广州明生医药有限公司
标签:路由,函数,服务器,程序,路径