我无法将嵌套的JSON对象发布到node.js服务器。
这是对象应该是什么样子:
{
"name" : "Plan 1",
"schedule": [
{
"start": 0,
"days": [
{
"title" : "Day1"
}
]
}
]
}
这是我的server.js代码
router.route('/plans')
.post(function(req, res) {
console.log(JSON.stringify(req.body));
var plan = new Plan();
plan.name = req.body.name;
plan.tagline = req.body.tagline;
plan.duration = req.body.duration;
plan.schedule = req.body.schedule;
plan.save(function(err) {
if (err)
res.send(err);
res.send(plan);
});
})
和一些python代码来发出请求。 (我尝试过使用Postman和curl并得到相同的结果)
import requests
payload = {"name" : "Plan 1", "schedule": [{"start": 0, "days": [{"title" : "Day1"}]}]}
r = requests.post("http://localhost:5000/plans", data=payload)
print(r.text)
这是server.js为JSON.stringify(req.body)
{"name" : "Plan 1", "schedule" : ["start", "days"]}
然后没有任何实际保存,所以print(r.text)
输出:
{}
这样做的正确方法是什么?如果相关,我使用MongoDB进行存储,但看起来我的server.js甚至没有正确接收完整的JSON。
答案 0 :(得分:1)
来自Python请求文档:http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}
>>> r = requests.post(url, data=json.dumps(payload), headers=headers)
这对我有用。感谢