post方法函数的响应对象是未定义的

时间:2017-08-01 21:11:30

标签: node.js

这是一个简单的演示,发出http post请求并尝试日志请求对象;

var express = require('express')
var bodyParser = require('body-parser')

var app = express()
var router = express.Router();
app.use(router)
app.use(bodyParser.json())

foo=(req, res)=>{
    console.log(req.body)
    res.send('Request Handled Here!')
}
router.route('/').post(foo)

app.listen(3300, '127.0.0.1', (req, res)=>{
    console.log("Express listening!!!!")
});

我可以看到数据“请求处理这里”消息,但返回数据总是在控制台中未定义,我无法理解为什么“req”对象未定义。

编辑:我正在使用邮递员来测试api,内容类型:application / json并且在Body部分中有{message:“hello world!”}虚拟数据

Edited2:似乎我唯一的问题是请求上下文中没有“body”属性,它检索所有req头但我只想获取发布的数据,网上的许多样本包含req.body部分,这里有什么问题?

1 个答案:

答案 0 :(得分:1)

中间件声明顺序中的问题。必须在router之后添加body-parser

var app = express()
var router = express.Router();
app.use(bodyParser.json());
app.use(router);