zoukankan      html  css  js  c++  java
  • 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);

     

  • 相关阅读:
    RabbitMQ + PHP (二)AMQP拓展安装
    RabbitMQ + PHP (一)入门与安装
    使用 Selenium 实现基于 Web 的自动化测试
    Selenium私房菜系列4 -- Selenium IDE的使用
    解决火狐浏览器安装不上Selenium IDE插件“此附加组件无法安装”
    (技术分享) 解决 Firefox 显示“已阻止载入混合活动内容”的问题
    MyEclipse打开 HTML 报错Failed to create the part's controls
    python2x与python3x的区别
    Python基础总结
    Mycat 读写分离+分库分表
  • 原文地址:https://www.cnblogs.com/xzsz/p/9506215.html
Copyright © 2011-2022 走看看