我试图从一个本地nodejs(express)实例发送以下Javascript对象到另一个。JSON字符串在发布后请求
var v = {
items: [{
id: "fil1",
values: [
{ key: "123", timestamp: 333, value: "aaa" },
{ key: "123", timestamp: 333, value: "aaa" },
{ key: "123", timestamp: 333, value: "aaa" },
{ key: "123", timestamp: 333, value: "aaa" }
]
}]
};
我使用下面的发布请求,其中request = require('request')
,并params
是上述目的v
的JSON.stringified版本。
var performPostRequest = function (ip, port, endpoint, params, callback) {
var url = "http://" + ip + ":" + port + "/" + endpoint;
request.post({
url: url,
form: params,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}, function (err, response, body) {
if (err) {
callback(err, body);
}
if (body) {
callback(err, JSON.parse(body));
}
});
};
接收端点看起来是这样的:
router.post('/values', function (req, res) {
console.log(req.body);
res.status(201).send("");
});
如果路由器是express.Router()。
所以,我的问题:当打印JSON.stringify(v)
在发送方,其结果是相匹配的物体V的字符串,但在接收端点打印请求的主体时,该字符串被弄乱了(见下文) 。我究竟做错了什么?
JSON.stringify(v)
:
{"items":[{"id":"fil1","values":[{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"}]}]}
req.body
在接收器:
{ '{"items":': { '{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"}': '' } }
'params'是一个字符串? [请求文档](https://www.npmjs.com/package/request#requestoptions-callback)表明'form'选项的值应该是对象或查询字符串,而不是JSON字符串。你的意思是使用'body'吗? –