这是一个简单的演示,发出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部分,这里有什么问题?
答案 0 :(得分:1)
中间件声明顺序中的问题。必须在router
之后添加body-parser
var app = express()
var router = express.Router();
app.use(bodyParser.json());
app.use(router);