2017-05-31 39 views
2

這可能是一個簡單的問題,但我對雲功能/節點編程尚屬陌生,尚未找到正確的文檔。如何發送來自Google Cloud函數的HTTP請求(nodeJS)

如何編寫一個Google雲端函數,它將接收到一個HTTP請求,然後向另一個端點發送一個HTTP請求?例如,我可以將HTTP觸發器發送到我的雲端功能(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 
    } 
}; 

回答

4

這是我設法得到Chetan Kanjani幫助的代碼。當我向我的Google Cloud功能端點發送文本消息時,它會向文本消息回覆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函數在哪裏打印出信息。這對未來的調試可能有幫助。

+0

日誌轉到谷歌雲日誌https://console.cloud.google.com/logs?service=cloudfunctions.googleapis.com – SoulMan

1

使用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. 
}); 
+0

感謝您指點我正確的方向。我能夠使雲端功能正常工作。最終版本發佈 –

3

請求模塊使用回調。如果您想使用JavaScript承諾,Axios模塊提供等效的功能。