使用node.js从Google Cloud Function中的IncomingMessage对象读取主体

编程入门 行业动态 更新时间:2024-10-11 01:19:37

使用node.js从Google Cloud Function中的IncomingMessage对象读取<a href=https://www.elefans.com/category/jswz/34/1771230.html style=主体"/>

使用node.js从Google Cloud Function中的IncomingMessage对象读取主体

我有一个基于node.js 8的Google Cloud Function,我想处理IncomingMessage对象的主体。我无法通过req.body中列出的Google Examples访问主体。我得到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"}'

标头和HTTP方法在日志中正确,只有正文丢失。

问题是:如何从req对象获取主体?

回答如下:

[不确定,但是在Google编写的示例中,他们引用了Express,而您引用了NodeJS普通http模块问题的解决方案。我不确定express本身是否使用了它。

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

req.data设置为undefined的原因可能是因为undefined中默认将其设置为Express。当express指向其documentation时,您将需要一个解析器。

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

希望对您有帮助。

更多推荐

使用node.js从Google Cloud Function中的IncomingMessage对象读取主体

本文发布于:2024-05-07 00:37:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753993.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:主体   对象   Google   js   node

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!