我发送JSON数据以路由:
const data=[{name:this.name}]
//qs.stringify(payload)
axios
.post('/users',{name:this.name})
.then(
response => {
console.log(response.data);
}
)
.catch(
// error=>console.log(error)
)
并尝试获取数据:
router.post('/', function (req, res, next) {
var data = req.body; // here is your data
var obj=JSON.parse(data);
console.log(obj.toString());
res.toString("ok");
});
我得到了错误500。 为什么不获取数据?
答案 0 :(得分:0)
您的客户端代码很好,除了名为data
的常量完全未使用。但是,在服务器端,req.body
几乎可以肯定包含一个已解析的JSON对象(前提是您已经包含一个主体解析中间件)。如果您尚未包含任何正文解析中间件,则req.body
将是undefined
。
此外,toString()
中的res
方法不会发送任何响应,它只是返回响应的字符串表示形式。
您需要对代码进行以下更改:
如果尚未将主体解析中间件(例如body-parser)包含到您的快速中间件链中,则为其中。
请勿致电JSON.parse(req.body)
。 body-parser
已经做到了。再次调用只会抛出异常,并返回500。
要将对象转换为JSON字符串,请使用JSON.stringify()
方法。 obj.toString()
可能只会返回[object Object]
。
使用.send()
上的.json()
,.end()
,res
方法之一发送响应。由于您需要发回一个字符串,因此res.send("ok")
似乎最合适。
更改后的代码应如下所示:
router.post('/', function (req, res, next) {
var data = req.body; // here is your data
console.log(JSON.stringify(data));
res.send("ok");
});