如果我发送这样的对象,我试图使用后请求将数据从响应发送到服务器(本地rest API):
{key:"value"}
然后我在服务器上得到它:
{ '{"key":"value"}': '' }
它将整个对象转换为键值对。 我该如何解决这个问题?
axios.post('http://localhost:5000/animals', JSON.stringify(data))
.then((response)=>{
console.log(response);
});
如果我不进行字符串化,则在服务器上会得到一个空对象,但是如果我进行字符串化,则将得到如上所述的这种对象。有什么办法可以将其转换回普通对象?
答案 0 :(得分:1)
服务器似乎希望以application/x-www-form-urlencoded
编码而不是application/json
编码获取数据。
为什么?
application/x-www-form-urlencoded
编码数据看起来像
key1=value1&key2=value2&....
但是值是可选的,所以
key1&key2=value2
也可以。
您正在向服务器发送{"key":"value"}
,它看起来像是没有值的密钥。由于您似乎可以控制服务器,因此请更改服务器实现,以将请求正文解析为JSON。如何执行此操作取决于您在服务器上使用的框架。
如果您使用的是express.js,请使用bodyParser.json()
。或者,按照Chinedu的建议,发送经过application/x-www-form-urlencoded
编码的数据(而不是JSON)。
答案 1 :(得分:0)
使用axios执行POST请求
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
您能否尝试构建要作为上述检查发送的数据,发送到您的api并查看虚拟数据是否到来。无需json解析或stringfy。 您是否在Node.js Express应用程序中使用主体解析器中间件?