首页 > 其他分享 >express 中间件

express 中间件

时间:2022-09-07 22:34:41浏览次数:73  
标签:req log res app express 中间件 next


const express = require('express'); const app = express(); // 定义中间件函数 const mw = function(req, res, next){ console.log('简单的中间件函数'); //把流转关系,转交给下一个中间件或路由 next(); } // 将 mw 注册为全局生效的中间件 app.use(mw);

// 全局中间件 // 上面两个合并之后的全局生效的中间件 /* app.use(function(req,res,next){     console.log('简单的中间件函数');     next(); }) */


 app.get('/',(req,res)=>{      res.send('home page.'+req.setTime);  })    app.get('/user',(req,res)=>{      res.send('User page.'+req.setTime);  })
 app.listen(80, ()=>{      console.log('http://127.0.0.1')  })

 

多个中间件

// 第一个中间件
app.use(function(req,res,next){

    // 获取到请求到达服务器的时间
    const time = Date.now();

    req.setTime = time;
    console.log('调用了第一个中间件');
    next();
})

// 第二个中间件
app.use(function(req,res,next){

    console.log('调用了第二个中间件');
    next();
})

// 第三个中间件
app.use(function(req,res,next){

    console.log('调用了第三个中间件');
    next();
})

 

局部生效的中间件

 const mw1 = function(req, es, next){
    console.log('局部中间件_1');
    next();
}
const mw2 = function(req, es, next){
    console.log('局部中间件_2');
    next();
}
// 加了中间件参数(可以写多个 app.get('/', mw1,mw2, (req,res)=>{}) )
app.get('/', [mw1,mw2], (req,res)=>{
    res.send('home page.');
}) 
    // app.get里面调用了mw1, 所有局部中间件生效,而/user 就无法生效

 

注意事项:

        1. 在路由之前注册中间件         2. 客户端发送过来的请求,可以连续调用多个中间件进行处理         3. 不要在执行玩中间件业务代码之后,不要忘记调用 next() 函数         4. 防止代码逻辑混乱,调用 next() 函数后不要再写额外的代码         5. 连续调用多个中间件时,多个中间件,共享 req 和 res 对象

标签:req,log,res,app,express,中间件,next
From: https://www.cnblogs.com/wh024/p/16667514.html

相关文章

  • 消息中间件
    用途异步处理比如某个调用链的业务逻辑可以分为关键和非关键,那么关键步骤执行完就能立即返回响应,非关键步骤可以放入MQ异步地消费在业务高峰期,可以用k8s动态增......
  • 一篇文章教你如何用界面组件DevExpress WPF创建一个WPF视图模型
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • Express 模板引擎
    Express模板引擎PhotobyRKTKNon不飞溅乙xpress有很多模板引擎可供选择。模板引擎是一种创建可重用代码的方法,同时允许将动态信息传递到代码中。它通常是一种简......
  • 国产化金蝶中间件
    新建域   按提示一步步执行,比较长我就不细说了。启动域新建完域之后,进入这个域的bin目录,前台启动(第一次先前台启动,要输入管理员初始化密码)前台启动命令:./starta......
  • 将 Go 类型打印为 S-Expressions
    将Go类型打印为S-ExpressionsPhotoby西格蒙德on不飞溅如果您已经使用Go一段时间,您可能知道当您使用“fmt”包渲染到控制台时,您可以从go结构中获得合理的输......
  • ASP.NET Core 实战-3.使用中间件管道处理请求
    我们将首先了解中间件的概念,您可以使用它实现的所有事情,以及中间件组件通常如何映射到“横切关注点”。这些是跨越多个不同层的应用程序的功能.日志记录、错误处理和安全......
  • 4.使用Express写接口
    4.1创建基本的服务器constexpress=require('express')constapp=express()app.listen('80',()=>{})4.2创建API路由模块constexpress=require('expres......
  • 3.2 Express中间件的初体验
    1.定义中间件函数constexpress=require('express');constapp=express();constmw=function(req,res,next){console.log('这是最简单的中间件函数');......
  • 使用golang实现Redis中间件
    (一).RESP协议解释  RESP协议在Redis1.2被引入,直到Redis2.0才成为和Redis服务器通信的标准。这个协议需要在你的Redis客户端实现。RESP是一个支持多种数据类型的序列化协......
  • ExpressBurn Plus for Mac(mac光盘刻录软件)中文版
    有没有适用于macOS操作系统的光盘刻录软件?这里带来ExpressBurnPlusforMac。ExpressBurnMac中文版让用户可以快速完整的将音频,视频和数据刻录到Mac上的CD,DVD和蓝光光盘......