3.2 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 来源: https://www.cnblogs.com/alwaysrun/p/16652394.html