前言
我用Node.js起的后端服务,就是少加了中间件,所以一直在报错,因为我没有加中间件,发送post请求时,我的数据格式没有转换,在后端接收不到,一直在返回undefined,就是少加了这两句代码
//解析json的插件
var bodyParser = require('body-parser');
// 解析 application/json;
app.use(bodyParser.json());
下面是我对中间件的总结,有需要补充的还请留言告诉我呀
body-parser
用户post请求提交的数据格式会有很多种,但是我们要通过中间件转换统一的数据格式,以一个对象的形式提供给服务器,方便进行后续的处理 通过rep.body来接受post请求发送过来的请求体,最后统一提交给服务器。
bodyParser.xxx
bodyParser.json([options])
解析并返回 json格式的数据
只有content-type默认是application/json才进入这个中间件解析处理。
{
// 接收数据的类型,默认是"application/json"
"type": "application/json",
}
bodyParser.urlencoded([options])
表单post提交、axios、fetch等库的post请求都需要这个中间件进行解析,返回json的格式数据。
当请求的数据类型是application/x-www-form-urlencoded时才会进入这个中间件进行处理。
{
// 接收数据的类型,默认是"application/x-www-form-urlencoded"
"type": "application/x-www-form-urlencoded",
}
注意
body-parser中间件已经被express集成,无需调用安装body-parser, 可以直接采用express.json()和express.urlencoded()实现相同功能
Express 内置了 3 个常用的中间件,极大的提高了 Express 项目的开发效率和体验
1.express.static 快速托管静态资源的内置中间件,例如: HTML 文件、图片、CSS 样式等
2.express.json 解析 JSON 格式的请求体数据
3.express.urlencoded 解析 URL-encoded 格式的请求体数据
// 解析post的两个中间件
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
// 解析静态资源的中间件
app.use(express.static('public'))
🔚
对于express中间件先总结这些,就是一些基本的用法,主要是记得每次在请求提交数据的时候,要记得把中间件这部分内容加上,不然他会一直返回undefined,就是很闹心啊