node.js-------使用路由模块

 

路由需要的信息,包括URL 及GET 或 POST参数。路由根据这些参数执行相应的js处理程序,因此,需要在HTTP请求中提取出URL以及GET或POST参数。这些请求参数在request对象中,这个对象是onRequest()回调函数的第一个参数。需要提取这些信息,需要Node.js的模块,url和querystring模块。

                url.parse(string).query

                         |

     url.parse(string).pathname    |

              |           |  

 http://localhost:8888/start?foo=bar&hello=world                                  

    querystring(string)["foo"]

                querystring(string)["hello"]

 

当然可以用querystring模块来解释POST请求体中的参数。

可以通过不同的请求的URL路径来映射到不同的处理程序上面,路由就是做这一个工作。

例如来自:/start和/upload的请求可以使用不同的程序来处理。

 

下面是一个例子:

---index.js

---server.js

---route.js

 

编写一个路由,route.js

function route(pathname){
	console.log("About to route a request for "  +  pathname);
}
exports.route = route;

 编写处理请求的页面,server.js

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);
		//在这里可以对不同的路径进行处理
		//if(pathname =="...") response.writeHead不同的信息之类
		response.writeHead(200, {"Content-Type" : "text/plain"});
		response.write("Hello World");
		response.end();
	}
	
	http.createServer(onRequest).listen(3000);
	console.log("Server has started.");
}
exports.start = start;

编写启动文件,index.js

var server = require("./server");
var router = require("./router");

server.start(router.route);

在客户端启动应用,服务器启动,开始监听3000端口:

node index.js

在浏览器端输入一个请求URL:

http://127.0.0.1:3000/

看到相应的客户端输出:

 浏览器显示:

 

posted @ 2014-09-24 11:12  495157297  阅读(570)  评论(0编辑  收藏  举报