6.2 中间件-middleware

中间件-middleware

一、概念:中间件其实就是一个函数。如果中间件通过了对请求的检测和处理, 必须要执行 `next()` 函数。

  如:  app.get('/request',function(req,res,next){},function(req,res){});

    在这个路由中间的这个function(req,res,next){}函数就是中间件。

  中间件就像学校看门大爷一样,社会人要进去学校打球,行,提供证明,证明通过进去,不通过404.

二、中间件分类:

  (1)全局中间件:针对所有路由有效,所有路由都要经过这个中间件处理

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');
    });     

三、全局中间件实例

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 + '
');
  next();
});

app.get('/login',function(req,res){
  res.end('login');
});

app.listen(80);

四、路由中间件实例

(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+' '); 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);

 

原文地址:https://www.cnblogs.com/xzsz/p/9506215.html