我正在用expressjs构建我的第一个node.js网站。
部分原因是处理从Fitbit到我网站上/api/1/fitbit_update
的端点的通知,如下所示:
POST /api/1/fitbit_update HTTP/1.1
Host: myhost.dk
Content-Type: multipart/form-data; boundary=JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR
Content-Length: 374
Connection: keep-alive
--JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR
Content-Disposition: form-data; name="updates"; filename="update1353963418000.json"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: binary
[{"collectionType":"activities","date":"2012-11-26","ownerId":"qw12er23","ownerType":"user","subscriptionId":"112233-activities"}]
--JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR--
我需要在HTTP请求的主体中解析json对象,但Express无法帮助我。
如何获取JSON对象的任何想法?
我已经看过一些中间件示例,但我不确定如何使用req.on(' someevent')方法实际获取内容。
req.body
返回一个空对象{}
答案 0 :(得分:3)
因此,此请求是一个多部分文件上载,您感兴趣的文件是JSON文档。查看express multipart example。你会想做类似的事情:
req.files.updates.path
JSON.parse
答案 1 :(得分:0)
在POST路由处理程序中尝试req.body
。
答案 2 :(得分:0)
添加express.bodyParser()
旧版本:
app.express.createServer(
express.cookieParser(),
express.bodyParser(),
.....
);
更新版本:
server.use(express.bodyParser());
然后你可以使用req.body
访问body答案 3 :(得分:0)
使用post方法从表单发送的值:电子邮件和密码
app.post('/login', function(req, res){
/* Get Errors of Validates */
var errors = [];
req.onValidationError(function(msg) {
errors.push(msg);
//console.log('msg: ' + msg);
return this;
});
/* Validates */
req.sanitize('email').xss();
req.sanitize('password').xss();
req.assert('email', 'Range email').len(6, 40);
req.assert('password', 'Range password').len(6, 20);
//*****************************************************
// Value Send Post "password" --> req.body.password
//*****************************************************
var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');
....
问候。