提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
所谓中间件(Middleware),就是特指业务流程的中间处理环境。举个例子:生活中处理污水的中间环节就可以理解为中间件。
提示:以下是本篇文章正文内容,下面案例可供参考
一、自定义中间件的步骤:
1.需求描述:手动模拟一个类似于express.urlencoded这样的中间件,来解析POST提交到服务器的表单数据
2.实现步骤:
-
定义中间件
-
监听
req
的data
事件 -
监听
req
的end
事件 -
使用
querystring
模块解析请求体数据 -
将解析出来的数据对象挂载为
req.body
-
将自定义中间件封装为模块
//index.js
//1.导入express模块
const express = require('express')
//2.实例化express对象
const app = express()
//9.导入Node内置模块 querystring
const qs = require('querystring')
//5.定义中间件
app.use((req,res,next)=>{
//6.定义一个str空字符串来接收客户端发送过来的请求体数据
let str = ''
//7.注册监听req的data事件
req.on('data',(chunk)=>{
str += chunk
})
//8.注册监听req的end事件
req.on('end',()=>{
//将字符串格式的请求体数据,解析成对象
//调用 qs.parse() 方法,将查询字符串解析成对象
const body = qs.parse(str)
//将解析出来的数据对象挂载为 req.body 属性
req.body = body
next()
})
})
//4.提交psot请求
app.post('/user',(req,res) =>{
res.send(req.body)
})
//3.调用app.listen方法.指定端口号并启动web服务器
app.listen(3000,()=>{
console.log('http:127.0.0.1:3000')
})
3.将自定义中间件封装为模块(优化代码)
// custom-body-parser.js
//9.导入Node内置模块 querystring
const qs = require('querystring')
const bodyParser = (req,res,next)=>{
//6.定义一个str空字符串来接收客户端发送过来的请求体数据
let str = ''
//7.注册监听req的data事件
req.on('data',(chunk)=>{
str += chunk
})
//8.注册监听req的end事件
req.on('end',()=>{
//将字符串格式的请求体数据,解析成对象
//调用 qs.parse() 方法,将查询字符串解析成对象
const body = qs.parse(str)
//将解析出来的数据对象挂载为 req.body 属性
req.body = body
next()
})
}
//向外提供模块里面的内容
module.export = bodyParser
4.在index.js中导入自己定义的中间件模块
//index.js
//1.导入express模块
const express = require('express')
//2.实例化express对象
const app = express()
//导入自己定义的中间件模块
const mybody = require('./index')
//5.定义中间件
app.use(mybody)
//4.提交psot请求
app.post('/user',(req,res) =>{
res.send(req.body)
})
//3.调用app.listen方法.指定端口号并启动web服务器
app.listen(3000,()=>{
console.log('http:127.0.0.1:3000')
})