Javascript 使用node.js从Google Cloud函数中的IncomingMessage对象读取正文
我有一个基于node.js 8的谷歌云函数,我想处理Javascript 使用node.js从Google Cloud函数中的IncomingMessage对象读取正文,javascript,node.js,google-cloud-functions,Javascript,Node.js,Google Cloud Functions,我有一个基于node.js 8的谷歌云函数,我想处理IncomingMessage对象的主体。我无法通过中列出的req.body访问正文。我得到req.body未定义 如果我记录req对象,我会得到一个IncomingMessage对象,因此我尝试按照说明读取主体,并以以下实现结束 'use strict'; exports.insertSuccessfulConsent = (req, res) => { console.log(`METHOD: ${req.method}`)
IncomingMessage
对象的主体。我无法通过中列出的req.body
访问正文。我得到req.body
未定义
如果我记录req
对象,我会得到一个IncomingMessage
对象,因此我尝试按照说明读取主体,并以以下实现结束
'use strict';
exports.insertSuccessfulConsent = (req, res) => {
console.log(`METHOD: ${req.method}`);
console.log(`HEADERS: ${JSON.stringify(req.headers)}`);
let body = "";
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
console.log(body);
});
console.log('Body: ' + body);
let message = 'POST processed';
res.status(200).send(message);
};
不幸的是,正文是空的,尽管HTTP POST请求的正文中有数据。这是我的测试电话:
curl-X POST-HTTP\u TRIGGER\u ENDPOINT-H“内容类型:application/json”-d'{“name”:“Jane”}'
日志中的头和HTTP方法正确,只缺少正文
问题是:如何从req对象获取主体?我不确定,但在Google编写的示例中,他们引用了
Express
,而您引用了一个解决NodeJS plainhttp
模块问题的解决方案。我不确定它是否适合这里,尽管express
本身正在使用它
“数据”事件的侦听器是否被调用?如果不是,这就是您的正文
为空的原因,您之前将其定义为空,并且您的侦听器从未被数据
事件调用
您的请求数据
被设置为未定义
的原因可能是因为它在Express
中默认为未定义
。您将需要一个解析器,正如express
在其上指出的那样
您可以使用类似模块的东西来填充req.body
我希望有帮助