nodejs + express + swig:如何在呈现之前检查请求?

说实话,我真的不知道nodejs,express和swig是如何工作的。 我有这个代码似乎提供了所有的我的HTML页面

app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', __dirname+'/html'); 

我希望能够在返回HTML文件之前检查请求。 具体来说,我想检查用户是否使用旧版本的IE,并将其redirect到另一个页面。

现在,我可以检查请求并redirect特定的页面,如此

 app.get('/veryspecificpage.html', function(req, res) { if( isBadBrowser(req) ) { res.writeHead(302, { 'Location': 'browserError.html' }); res.end(); } else { res.render('veryspecificpage', {}); }); }) 

但是我不想为每个.html页面指定这个。 我如何拦截请求,并为所有的HTML页面做到这一点?

logging每个请求

示例节点Web服务器。 简单地logging每个请求到服务器这样…

 var http = require('http'); http.createServer(function (req, res) { console.log(req); // <--- LOGS EACH REQUEST res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 

您应该使用中间件来检查每个请求。

 // gets executed for every request to the app app.use(function (req, res, next) { // check for browser here and redirect if necessary, if not, next() will continue to other middleware/route. next(); }); 

确保你把它放在任何路线之前。 您可以通过转到此页面了解更多信息。