以下是Node.js / Express Web服务器的简单示例:
var express = require('express'); var app = express(); app.get('/*',function(req,res){ res.end('Hello,you requested ' + req.url + '.'); }); app.listen(3000);
当它运行时,请求http:// localhost:3000 / Hello-world将生成响应
Hello,you requested /Hello-world.
要了解中间件,我想重新实现这个服务器,但是使用中间件“获取数据”,“操纵数据”和“输出数据”包含在单独的函数中.我试过跟随,但是对于这个代码,请求http:// localhost:3000 / Hello-world没有响应.只有app.get(..)代码似乎执行.
var express = require('express'); var app = express(); // Step 1: get input app.get('/*',res){ req['testing'] = req.url; }); // Step 2: manipulate data app.use('/*',res,next) { req['testing'] = 'Hello,you requested ' + req['testing']; return next(); }); // Step 3: send output app.use('/*',next) { res.end(req['testing']); return next(); }); app.listen(3000);
似乎缺少将功能连接在一起的东西?
解决方法
//This needs to be MIDDLEWARE not a route handler // Step 1: get input app.use(function(req,next){ req.testing = req.url; next(); }); // Step 2: manipulate data app.use(function(req,next) { req.testing = 'Hello,you requested ' + req.testing; next(); }); // Step 3: send output app.get('/*',res) { res.end(req.testing); });