Express的中间件bodyParser

763 阅读2分钟

前言

我用Node.js起的后端服务,就是少加了中间件,所以一直在报错,因为我没有加中间件,发送post请求时,我的数据格式没有转换,在后端接收不到,一直在返回undefined,就是少加了这两句代码

//解析json的插件
var bodyParser = require('body-parser');
// 解析 application/json;
app.use(bodyParser.json());

下面是我对中间件的总结,有需要补充的还请留言告诉我呀

Suggestion.gif

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,就是很闹心啊