Express中间件

目录

Express中间件

中间件的概念

next函数

全局中间与局部中间件

多个中间件

中间的5个注意事项

中间的分类

应用级中间件

路由级中间件

错误级中间件

Express内置中间件

express.json

express.urlencoded

第三方中间件​编辑

自定义中间件


Express中间件

中间件的概念

next函数

全局中间与局部中间件

多个中间件

中间的5个注意事项

中间的分类

应用级中间件

路由级中间件

错误级中间件

Express内置中间件

express.json
javascript 复制代码
const express = require('express')
const app = express()

// 内置中间件 express.json()
// 注意:除了错误级别的中间件express.error(),其他的中间件,必须在路由之前进行配置
// 通过express.json()这个中间件,解析json格式的数据
app.use(express.json())


app.post('/user',(req,res) => {
    // 在服务器可以使用 req.body属性,接收客户端发送的请求体数据
    //默认情况下,不配置解析表单数据的中间件,则req.body默认等于undefined
    console.log('post ok,req.body = ',req.body)
    res.send('post ok')
})

app.listen(80,() => {
    console.log('http://127.0.0.1')
})
express.urlencoded
javascript 复制代码
const express = require('express')
const app = express()


// 解析表单数据的中间件 express.urlencoded()
// 注意:当需要使用express.urlencoded()解析表单数据的时候,不要使用express.json()
app.use(express.urlencoded({extended:false}))


app.post('/book',(req,res) => {
    // 在服务器可以使用 req.body属性,接收客户端发送的JSON格式的请求体数据
    console.log('book:post ok,req.body = ',req.body)
    res.send('book:post ok')
})
app.listen(80,() => {
    console.log('http://127.0.0.1')
})

第三方中间件

javascript 复制代码
// body-parser中间件使用方法
// 导入expresss模块
const express = require('express')
// 穿件express的服务器实例
const app = express()

// 导入解析表单数据的body-parser中间件
const bodyParser = require('body-parser')
//使用app.use()注册中间件
app.use(bodyParser.urlencoded({extended:false}))

app.post('/user',(req,res) => {
    console.log('user:post ok,req.body = ',req.body)
    res.send('user:post ok')
})

// 调用 app.listen()方法,指定端口号并启动web服务器
app.listen(80,() => {
    console.log('http://127.0.0.1')
})

自定义中间件

javascript 复制代码
//自定义中间件

// 导入expresss模块
const express = require('express')
// 创建express的服务器实例
const app = express()

//导入node.js 内置的querystring模块
const qs= require('querystring')

//1.定义中间件,解析表单数据的中间件
app.use((req,res,next) => {
    // 定义中间件具体业务逻辑
    // 1.1 定义1个str字符串,专门用来存储客户端发送过来的请求体数据
    let str = ''
    // 1.2 监听req的data事件
    req.on('data',(chunk) => {
        str += chunk
    })
    // 1.3 监听req的end事件
    req.on('end',() => {
        // 在str中存放的是完整的请求体数据
        // TODO:把字符串格式的请求体数据,解析为对象格式
        const body = qs.parse(str)
        // 1.4 把解析出来的对象格式的请求体数据,挂载到req.body属性上
        req.body = body
        // 1.5 调用next()函数,执行后续的业务逻辑
        next()
    })
})

app.post('/user',(req,res) => {
    console.log('user:post ok,req.body = ',req.body)
    res.send(req.body)
})

//调用app.listen()方法,指定端口号并启动web服务器
app.listen(80,() => {
    console.log('http://127.0.0.1')
})
相关推荐
xd000028 小时前
11. vue pinia 和react redux、jotai对比
node.js
程序猿小D9 小时前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
前端老六喔17 小时前
🎉 开源项目推荐 | 让你的 TypeScript/React 项目瘦身更简单!
node.js·前端工程化
醉书生ꦿ℘゜এ18 小时前
npm error Cannot read properties of null (reading ‘matches‘)
前端·npm·node.js
安全系统学习18 小时前
网络安全逆向分析之rust逆向技巧
前端·算法·安全·web安全·网络安全·中间件
超级土豆粉19 小时前
从0到1写一个适用于Node.js的User Agent生成库
linux·ubuntu·node.js
空中湖1 天前
‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
npm·node.js
NoneCoder1 天前
Redux 实践与中间件应用
前端·react.js·中间件·面试
淡水猫.1 天前
Next.js 中间件鉴权绕过漏洞 CVE-2025-29927
javascript·安全·web安全·中间件
SailingCoder1 天前
grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
运维·人工智能·typescript·node.js·grafana