首页 > 其他分享 >3.2 Express中间件的初体验

3.2 Express中间件的初体验

时间:2022-09-03 12:55:33浏览次数:75  
标签:初体验 req res app Express 中间件 next express

1.定义中间件函数

const express = require('express');
const app = express();

const mw = function (req, res, next) {
    console.log('这是最简单的中间件函数');

    //把流转关系转交给下一个中间件或路由
    next()
}

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

2.全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

 

 

const express = require('express');

const app = express();


const mw = function (req, res, next) {
    console.log('这是最简单的中间件函数');

    //把流转关系转交给下一个中间件或路由
    next()
}

//当发起请求之后,会先把请求交给中间件,所以会调用mw,接着使用next交给下一个
//如果没有就会默认给下面的路由


//将mw注册为全局生效的中间件
app.use(mw)

app.get('/', (req, res) => {
    res.send('HOme page')
})
app.get('/user', (req, res) => {
    res.send('Userpage')
})



app.listen('80', () => {
    console.log('http://127.0.0.1');
})

 

 3.定义全局中间件的简化形式

const express = require('express');

const app = express();


// const mw = function (req, res, next) {
//     console.log('这是最简单的中间件函数');

//     //把流转关系转交给下一个中间件或路由
//     next()
// }

// //当发起请求之后,会先把请求交给中间件,所以会调用mw,接着使用next交给下一个
// //如果没有就会默认给下面的路由


// //将mw注册为全局生效的中间件
// app.use(mw)

app.use((req, res, next) => {
    console.log('这是最简单的中间件函数');
    next()
})

app.get('/', (req, res) => {
    res.send('HOme page')
})
app.get('/user', (req, res) => {
    res.send('Userpage')
})

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

 

 4.中间件的作用

多个中间件可以共享同一份req和res,基于这样的操作,我们可以在上游的中间中,

 

 

const express = require('express');

const app = express();


app.use((req, res, next) => {
    const time = Date.now()
    //为req对象,挂载自定义属性,从而把时间共享给后面的所有路由
    console.log('这是最简单的中间件函数');
    req.startTime = time
    console.log(time);
    next()
})

app.get('/', (req, res) => {
    res.send('HOme page' + req.startTime)
})
app.get('/user', (req, res) => {
    res.send('Userpage' + req.startTime)
})



app.listen('80', () => {
    console.log('http://127.0.0.1');
})

5.定义多个全局中间件

可以使用app.use()连续定义多个中间件,客户端请求到达服务器之后,会按照中间件定义的先后顺序依次进行调用,示例代码如下:

const express = require('express'); const app = express();
//定义第一个全局中间件 app.use((req, res, next) => {     console.log('调用了第一个全局中间件');     next() }) //定义第二个全局中间件 app.use((req, res, next) => {     console.log('调用了第二个全局中间件');     next() }) app.get('/', (req, res) => {     res.send('HOme page') }) app.get('/user', (req, res) => {     res.send('Userpage') })
app.listen('80', () => {     console.log('http://127.0.0.1'); })

6.局部生效的中间件

不使用app.use()定义的中间件,叫做局部生效的中间件,示例代码如下:

const express = require('express')

const app = express()

const mw = (req, res, next) => {
    console.log('调用了局部生效的中间件');
    next()
}

app.get('/', mw, (req, res) => {  //在这里先调用的是mw这个局部中间件,其次再调用路由
    res.send('你很棒嘛');
})

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

7.定义多个局部中间件

 

 8.了解中间件的5个使用注意

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

9.中间件的分类

1.应用级别的中间件

 

 2.路由级别的中间件

 

标签:初体验,req,res,app,Express,中间件,next,express
From: https://www.cnblogs.com/alwaysrun/p/16652394.html

相关文章

  • 使用golang实现Redis中间件
    (一).RESP协议解释  RESP协议在Redis1.2被引入,直到Redis2.0才成为和Redis服务器通信的标准。这个协议需要在你的Redis客户端实现。RESP是一个支持多种数据类型的序列化协......
  • ExpressBurn Plus for Mac(mac光盘刻录软件)中文版
    有没有适用于macOS操作系统的光盘刻录软件?这里带来ExpressBurnPlusforMac。ExpressBurnMac中文版让用户可以快速完整的将音频,视频和数据刻录到Mac上的CD,DVD和蓝光光盘......
  • 界面组件DevExpress MAUI & Xamarin v22.1 - 全新的项目模板
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboard eXpressApp 框架、适用于VisualStudio的CodeRush等一系列辅助工具。......
  • java springboot 初体验 (十二)对接eureka
    上一篇javaspringboot初体验(十一)对接mysqlhttps://www.cnblogs.com/zwjvzwj/p/16620045.html搭建一个eureka注册服务 创建服务     pom文件......
  • VisualStudio启动项目提示“[xxxx] iisexpress.exe”已退出
    一、在通过VisualStudio直接启动项目时,iisexpress.exe直接退出1.程序“[6068]iisexpress.exe:程序跟踪”已退出,返回值为0(0x0)。2.程序“[6068]iisexpress.exe“已......
  • day7 rabbit MQ中间件
    中间件屏蔽操作系统复杂性开发人员要熟悉TCPIP底层协议。负载均衡集群,runtimegetimeprocessor线程休眠用waitwaitobjectsleep是thread锁的释放sleep......
  • 【Traefik二次开发】中间件 Middleware 开发
    本篇只讨论HTTP中间件中间件定义https://doc.traefik.io/traefik/middlewares/overview/Attachedtotherouters,piecesofmiddlewareareameansoftweakingthe......
  • 黑马_10、使用 Express 写接口
    使用Express写接口步骤如下1创建基本的服务器代码://导入expressconstexpress=require('express')//创建服务器实例constapp=express()//writeyourco......
  • EvaluationSystem:中间件和共享模块
    1、共享模块(shared)【第一】数据库连接(shared/sequelize.js)//数据库const{Sequelize}=require('sequelize');module.exports=newSequelize({dialect:'mys......
  • 中间件
    中间件中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也大量出现在软件市场,但中间件的定义却一直比较模糊,导致中间件的分类也不很统一。也许正因为如此,......