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 + '\r\n'); 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+'\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);
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp