我試圖從一個本地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'嗎? –