gpt4 book ai didi

javascript - 使用 node.js 从 Google Cloud Function 中的 IncomingMessage 对象读取正文

转载 作者:行者123 更新时间:2023-12-02 22:03:11 27 4
gpt4 key购买 nike

我有一个基于 node.js 8 的 Google Cloud Function,我想处理 IncomingMessage 对象的正文。我无法通过 Google Examples 中列出的 req.body 访问正文。我得到 req.body 未定义。

如果我记录 req 对象,我会得到一个 IncomingMessage 对象,因此我尝试按照解释读取正文 here我最终得到了以下实现。

'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_TRIGGER_ENDPOINT -H "Content-Type:application/json"-d '{"name":"Jane"}'

日志中的 header 和 HTTP 方法正确,仅缺少正文。

问题是:如何从 req 对象中获取 Body?

最佳答案

我不确定,但在 Google 编写的示例中,他们引用 Express并且您引用了 NodeJS plain http 问题的解决方案模块。我不确定它是否适合这里,尽管express正在使用它。本身。

您的“数据”事件监听器是否被调用?如果没有,这就是你的 body 的原因为空,您之前将其定义为空,并且您的监听器从未被 data 调用事件。

你的req.data的原因设置为undefined可能是因为它是undefined默认为Express 。您将需要一个解析器 express指出其documentation .

您可以使用类似 body-parser 的内容用于填充您的 req.body 的模块.

希望对您有所帮助。

关于javascript - 使用 node.js 从 Google Cloud Function 中的 IncomingMessage 对象读取正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59812106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com