如何从Google Cloud Functions发送HTTP请求(nodeJS)

这可能是一个简单的问题,但我是云新function/节点编程,还没有find正确的文件。

如何编写Google云端function,接收HTTP请求,然后向另一个端点发送HTTP请求? 例如,我可以将HTTP触发器发送到我的云端function( https://us-central1-plugin-check-xxxx.cloudfunctions.net/HelloWorldTest )。 后来在这个项目中,我会弄清楚如何实现延迟。 但是接下来我想用新的HTTP请求来响应不同的端点( https://maker.ifttt.com/trigger/arrive/with/key/xxxx )。 我怎么做?

exports.helloWorld = function helloWorld(req, res) { // Example input: {"message": "Hello!"} if (req.body.message === undefined) { // This is an error case, as "message" is required. res.status(400).send('No message defined!'); } else { // Everything is okay. console.log(req.body.message); res.status(200).send('Success: ' + req.body.message); // ??? send a HTTP request to IFTTT endpoint here } }; 

这是我设法在Chetan Kanjani的帮助下工作的代码。 当我向我的Google Cloudfunction端点发送文本消息时,会向文本消息回复到IFTTT(不同的端点)。

 const request = require('request'); exports.helloWorld = function helloWorld(req, res) { // Example input: {"message": "Hello!"} if (req.body.message === undefined) { // This is an error case, as "message" is required. res.status(400).send('No message defined!'); } else { // Everything is okay. console.log(req.body.message); request.get('https://maker.ifttt.com/trigger/arrival/with/key/xxxx', function (error, response, body) { console.log('error:', error); // Print the error if one occurred console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received console.log('body:', body); //Prints the response of the request. }); res.status(200).send("Success"); } }; 

我还必须更改package.json文件以包含请求包。 它已经有了样本http包,我添加了依赖关系:

 { "name": "sample-http", "version": "0.0.1", "dependencies": { "request": "^2.81.0" } } 

我仍然不确定console.log函数在哪里打印出信息。 这可能有助于未来的debugging。

使用https://www.npmjs.com/package/request模块。

 var request = require('request'); request.get('https://maker.ifttt.com/trigger/arrive/with/key/xxxx', function (error, response, body) { console.log('error:', error); // Print the error if one occurred console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received console.log('body:', body); //Prints the response of the request. }); 

请求模块使用callback。 如果您想使用JavaScript承诺,Axios模块提供了相同的function。