Express中间件
短信预约 -IT技能 免费直播动态提醒
1.创建最基本的中间件
const express = require('express');const send = require('send');const app = express()const mw = function (req, res, next) { console.log('middleware'); // 一定要调用next() 把流转关系交给下一个中间件或路由 next()}app.listen(80, () => { console.log('express server running at ');})
2.全局生效的中间件
客户端发起的任何请求,到达服务器之后,都会触发的中间件
const express = require('express');const send = require('send');const app = express()const mw = (req, res, next) => { console.log('middleware'); // 一定要调用next() 把流转关系交给下一个中间件或路由 next()}// 将mw注册为全局生效的中间件app.use(mw)app.get('/', (req, res) => { res.send('Home Page')})app.get('/user', (req, res) => { res.send('User Page')})app.listen(80, () => { console.log('express server running at ');})
3.局部生效的中间件
const express = require('express');const send = require('send');const app = express()const mw1 = (req, res, next) => { console.log('mw1'); next()}// 局部生效app.get('/', mw1, (req, res) => { res.send('Home Page')})app.get('/user', (req, res) => { res.send('User Page')})app.listen(80, () => { console.log('express server running at ');})
多个局部生效的中间件
const express = require('express');const send = require('send');const app = express()const mw1 = (req, res, next) => { console.log('mw1'); next()}const mw2 = (req, res, next) => { console.log('mw2'); next()}// 局部生效// app.get('/', [mw1,mw2], (req, res) => { 也行app.get('/', mw1,mw2, (req, res) => { res.send('Home Page')})app.get('/user', (req, res) => { res.send('User Page')})app.listen(80, () => { console.log('express server running at ');})
4.中间件的作用
5.中间件注意事项
中间件必须在路由之前注册
6.中间件分类
- 应用中间件
- 路由中间件
- 错误级别中间件
错误级别中间件必须在所有路由之后
- 内置中间件
举例:express.json()
const express = require('express');const send = require('send');const app = express()// 配置解析表单数据的中间件app.use(express.json())app.get('/', (req, res) => { console.log(req.header, req.body); res.send('User Page')})app.listen(80, () => { console.log('express server running at ');})
7.自定义中间件
来源地址:https://blog.csdn.net/weixin_63681863/article/details/131982910
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341