最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 14浏览 0评论

使用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对象读取主体

我有一个基于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

希望对您有帮助。

发布评论

评论列表 (0)

  1. 暂无评论