Express使用body-parser中间件解析POST请求

🌞场景再现

  1. Express项目中需要添加一个POST接口,使用的是Express的路由组件处理的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    postTest.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
    4
    app.js文件

    import postTest from 'postTest.router'
    app.use('/api/test', postTest)
  2. 这时候使用postman发送一个post请求尝试一下,发现路由处理函数中获取到的req.body是{}

  3. 然后Google了一下,原来高版本的Express剥离了body-parserget没有影响,post需要自己添加处理的中间件,就安装上了body-parser中间件,并且也在app.js上面使用了,但是依然没有用。app.js中的代码如下:
    1
    2
    3
    import bodyParser from 'body-parser'
    app.use(bodyParser.json())
    app.use(bodyParser.urlencoded())

🌞原因

  1. 最后读了读官方文档才知道,bodyParser.json()是解析json格式的数据,同样用途的方法还有bodyParser.text() bodyParser.row(),而我用postman发送的格式是text格式的,必须要用bodyParser.text()解析,修改之后就可以了。

推荐文章