中間件-middlewareexpress
1、概念:中間件其實就是一個函數。若是中間件經過了對請求的檢測和處理, 必需要執行 `next()` 函數。app
如: app.get('/request',function(req,res,next){},function(req,res){});函數
在這個路由中間的這個function(req,res,next){}函數就是中間件。ui
中間件就像學校看門大爺同樣,社會人要進去學校打球,行,提供證實,證實經過進去,不經過404.url
2、中間件分類:spa
(1)全局中間件:針對全部路由有效,全部路由都要通過這個中間件處理code
app.use(function(req, res, next){})
(2)路由中間件:只針對當前這個路由有效,對當前這個路由規則進行處理中間件
app.get('/arc/1', function(req, res, next){ / res.redirect('/login'); next(); }, function(req, res){ res.send('ok'); });
3、全局中間件實例blog
let express=require('express'); let app=express(); let fs=require('fs'); let url=require('url'); var date=new Date(); app.use(express.static('public')); //全局中間件 app.use(function(req,res,next){ var u=req.url; fs.appendFileSync('./logs', u + date + '\r\n'); next(); }); app.get('/login',function(req,res){ res.end('login'); }); app.listen(80);
4、路由中間件實例路由
(1)登記功能 記錄請求路徑
let express=require('express'); let app=express(); let fs=require('fs'); app.use(express.static('public')); app.get('/request',function(req,res,next){
// 登記功能 記錄請求路徑 var u=req.url; fs.appendFileSync('./log',u+'\n\r'); next(); },function(req,res){ res.end('ok'); }); app.listen(80);
(2)演示進入後臺設置頁面
/setting?admin=1 管理員
/setting 非管理員
let express=require('express'); let app=express(); let url=require('url'); app.use(express.static('public')); app.get('/setting', function(req, res, next){ //獲取請求中的 admin 參數 var admin = url.parse(req.url, true).query.admin; //若是是管理員 if(admin){ next() }else{ //跳轉 res.redirect('/login') } }, function(req, res){ res.end('setting page'); });
app.get('/login',function(req,res){
res.end('login');
});
app.listen(80);