1. 程式人生 > >中間件與路由處理器

中間件與路由處理器

如果 sse get 參數 use 技術 nbsp 就會 客戶

路由處理器和中間件的參數中都有回調函數,這個函數有2個3個或4個參數。
如果有2個或3個參數,前兩個參數是請求和響應對象,第三個參數是next函數。
如果有4個參數,它就變成了錯誤處理中間件,第一個參數變成了錯誤對象,然後依次是請求、響應和next對象。
如果不調用next(),管道就會被終止,也不會再有處理器或中間件做後續處理,此時應該發送一個響應到客戶端。

var app = require(‘express‘)(); let i=1; app.use(function(req, res, next){ console.log(‘\nALLWAYS‘+i++); next();
}); app.use(function(req, res, next){ console.log(‘SOMETIMES‘); next(); }); //錯誤處理中間件 app.use(function(err, req, res, next){ console.log(‘unhandled error detected: ‘ + err.message); res.send(‘500 - server error‘); }); app.use(function(req, res){ console.log(‘route not handled‘); res.send(‘404 - not found‘);
}); app.listen(3000, function(){ console.log(‘listening on 3000‘); });

技術分享

技術分享

var app = require(‘express‘)(); let i=1; app.use(function(req, res, next){ console.log(‘\nALLWAYS‘+i++); next(); }); app.get(‘/a‘, function(req, res){ console.log(‘/a: route terminated‘); res.send(‘a‘);
}); app.get(‘/a‘, function(req, res){ console.log(‘/a: never called‘); }); app.use(function(req, res, next){ console.log(‘SOMETIMES‘); next(); }); //錯誤處理中間件 app.use(function(err, req, res, next){ console.log(‘unhandled error detected: ‘ + err.message); res.send(‘500 - server error‘); }); app.use(function(req, res){ console.log(‘route not handled‘); res.send(‘404 - not found‘); }); app.listen(3000, function(){ console.log(‘listening on 3000‘); });

技術分享

技術分享

var app = require(‘express‘)(); let i=1; app.use(function(req, res, next){ console.log(‘\nALLWAYS‘+i++); next(); }); app.get(‘/b‘, function(req, res, next){ console.log(‘/b: route not terminated‘); next(); }); app.use(function(req, res, next){ console.log(‘SOMETIMES‘); next(); }); app.get(‘/b‘, function(req, res, next){ console.log(‘/b (part 2): error thrown‘ ); throw new Error(‘b failed‘); }); app.use(‘/b‘, function(err, req, res, next){ console.log(‘/b error detected and passed on‘); next(err); }); //錯誤處理中間件 app.use(function(err, req, res, next){ console.log(‘unhandled error detected: ‘ + err.message); res.send(‘500 - server error‘); }); app.use(function(req, res){ console.log(‘route not handled‘); res.send(‘404 - not found‘); }); app.listen(3000, function(){ console.log(‘listening on 3000‘); });

技術分享

技術分享

var app = require(‘express‘)(); let i=1; app.use(function(req, res, next){ console.log(‘\nALLWAYS‘+i++); next(); }); app.use(function(req, res, next){ console.log(‘SOMETIMES‘); next(); }); app.get(‘/c‘, function(err, req){ console.log(‘/c: error thrown‘); throw new Error(‘c failed‘); }); app.use(‘/c‘, function(err, req, res, next){ console.log(‘/c: error deteccted but not passed on‘); next(); }); //錯誤處理中間件 app.use(function(err, req, res, next){ console.log(‘unhandled error detected: ‘ + err.message); res.send(‘500 - server error‘); }); app.use(function(req, res){ console.log(‘route not handled‘); res.send(‘404 - not found‘); }); app.listen(3000, function(){ console.log(‘listening on 3000‘); });

技術分享

技術分享

中間件與路由處理器