Express中间件

embedded/2025/1/21 12:43:31/

目录

Express中间件

中间件的概念

next函数

全局中间与局部中间件

多个中间件

中间的5个注意事项

中间的分类

应用级中间件

路由级中间件

错误级中间件

Express内置中间件

express.json-toc" name="tableOfContents" style="margin-left:120px">express.json

express.urlencoded-toc" name="tableOfContents" style="margin-left:120px">express.urlencoded

第三方中间件​编辑

自定义中间件


Express中间件

中间件的概念

next函数

全局中间与局部中间件

多个中间件

中间的5个注意事项

中间的分类

应用级中间件

路由级中间件

错误级中间件

Express内置中间件

express.json" name="express.json">express.json
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默认等于undefinedconsole.log('post ok,req.body = ',req.body)res.send('post ok')
})app.listen(80,() => {console.log('http://127.0.0.1')
})
express.urlencoded" name="express.urlencoded">express.urlencoded
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')
})

第三方中间件

// 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')
})

自定义中间件

//自定义中间件// 导入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')
})


http://www.ppmy.cn/embedded/155771.html

相关文章

【Linux】打破Linux神秘的面纱

个人主页~ 在开始学习的时候我们一定会对Linux产生抵触心理,我也是这样的,通过一点一点的学习,到初步会使用阶段,我们就可以打破这种心理,开始逐渐掌握,所以我们这篇文章将在一个宏观的角度上看待Linux&…

2025 OpenCloudOS欧拉系统在线安装docker,在国产欧拉系统安装部署及docker

1.查看系统 [rootVM-12-14-opencloudos ~]# cat /etc/os-release NAME"OpenCloudOS" VERSION"8.10" ID"opencloudos" ID_LIKE"rhel fedora" VERSION_ID"8.10" PLATFORM_ID"platform:oc8" PRETTY_NAME"OpenC…

道格拉斯-普克算法(DP)轮廓点精简(Python)

1、介绍 道格拉斯-普克算法由David H. Douglas和Thomas K. Peucker于1973年提出,主要用于简化曲线或折线。而实际中,激光点云的边缘点非常粗糙,如果直接将点进行连接,锯齿问题严重。经过DP算法处理后,数据显示会比较光…

FPGA工程师成长四阶段

朋友,你有入行三年、五年、十年的职业规划吗?你知道你所做的岗位未来该如何成长吗? FPGA行业的发展近几年是蓬勃发展,有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前,都会抱着满腹对职业发…

pyspark连接clickhouse数据库的方式(其它数据库同样适用)

目录 一、背景简记二、pyspark连接clickhouse方式记录三、结语参考学习博文 一、背景简记 实际工作中,大部分所用的数据存储地址都是在数据库中,如我司现在常用的数据库是clickhouse,相关数据的统计分析都在此上操作。如果想用pyspark连接cl…

【三国游戏——贪心、排序】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e510; int a[N], b[N], c[N]; int w[4][N]; int main() {int n;cin >> n;for(int i 1; i < n; i)cin >> a[i];for(int i 1; i < n; i)cin >> b[i…

【玩转全栈】----Django制作部门管理页面

大致效果 我先给个大致效果&#xff0c;基本融合了Django、Bootstrap、css、html等等。 基于Django的部门管理系统 BootStrap BootStrap简介 Bootstrap 是一个由 Twitter 团队开发的开源前端框架&#xff0c;专注于帮助开发者快速构建响应式和现代化的网页。它基于 HTML、CSS …

Linux测试处理fps为30、1920*1080、一分钟的视频性能

前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…