🌞场景再现
Express项目中需要添加一个POST接口,使用的是Express的路由组件处理的
1
2
3
4
5
6
7
8
9postTest.router.js
var express = require('express');
var router = express.Router();
router.post('/', function(req, res) {
console.log('req.body', req.body)
res.send('helloaa')
})
module.exports = router;1
2
3
4app.js文件
import postTest from 'postTest.router'
app.use('/api/test', postTest)这时候使用postman发送一个post请求尝试一下,发现路由处理函数中获取到的req.body是
{}
- 然后Google了一下,原来高版本的Express剥离了
body-parser
,get
没有影响,post
需要自己添加处理的中间件,就安装上了body-parser
中间件,并且也在app.js
上面使用了,但是依然没有用。app.js
中的代码如下:1
2
3import bodyParser from 'body-parser'
app.use(bodyParser.json())
app.use(bodyParser.urlencoded())
🌞原因
- 最后读了读官方文档才知道,
bodyParser.json()
是解析json格式的数据,同样用途的方法还有bodyParser.text()
bodyParser.row()
,而我用postman发送的格式是text格式的,必须要用bodyParser.text()
解析,修改之后就可以了。