node.js 一个路由2次 request

node.js 和其他服务器端编程语言有很大区别,语言上的特性优点已经在前面分享过,这里就不说了.

与其他语言相比,还有一个区别,node.js 自身实现了一个服务器,而其他服务器端语言大部分要依赖Apach ,nginx ,IIS 等.

node.js 可以用几句代码轻松实现:

var http = require('http');        


var webServer = function (req, res){ 
		res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); 
		res.write('<html><body>'); 
		res.write('<h2>Hello World!</h2>'); 
		res.end('</body></html>'); 
};

var createWebServer=http.createServer(webServer);

createWebServer.listen(8000);
console.log('listen 8000');

上面我们就实现了,不论什么路由,服务器端都会返回 Hello World!


但是:如果你看控制台log 会发现每个url的请求,都有2次 request .

不信可以把 console.log(req);

放到 webServer 函数中间,你一定会发现每个请求都输出2次 request 信息.


原因是因为node.js 每个请求默认还有一个 对 favicon.ico 资源的请求.Express 貌似对此请求做了特殊处理.

我们可以这样避免 favicon.ico 资源的请求

var http = require('http');        

var webServer = function (req, res){ 
	if(req.url!='/favicon.ico'){
		res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); 
		res.write('<html><body>'); 
		res.write('<h2>Hello World!</h2>'); 
		res.end('</body></html>'); 
	}
};

var createWebServer=http.createServer(webServer);

createWebServer.listen(8000);
console.log('listen 8000');




回到顶部