C'est probablement une question simple, mais je suis novice dans les fonctions cloud/la programmation de nœuds et je n'ai pas encore trouvé la bonne documentation.
Comment puis-je écrire une fonction Google Cloud qui recevra une requête HTTP, puis envoie une requête HTTP à un autre point de terminaison? Par exemple, je peux envoyer le déclencheur HTTP à ma fonction cloud ( https://us-central1-plugin-check-xxxx.cloudfunctions.net/HelloWorldTest ). Plus tard dans le projet, je découvrirai comment mettre en œuvre un délai. Mais ensuite, je souhaite répondre avec une nouvelle requête HTTP à un autre terminal ( https://maker.ifttt.com/trigger/arrive/with/key/xxxx ). Comment je fais ça?
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
}
};
Voici le code que j'ai réussi à obtenir avec l'aide de Chetan Kanjani. Lorsque j'envoie un message texte à mon noeud final de fonction Google Cloud, il répond par un message texte à IFTTT (un autre noeud final).
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");
}
};
J'ai également dû modifier le fichier package.json pour inclure le package de demande. Il avait déjà le paquet sample-http, j'ai ajouté les dépendances:
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"request": "^2.81.0"
}
}
Je ne sais toujours pas où la fonction console.log affiche les informations. Cela pourrait être utile pour le débogage futur.
Le module de demande utilise des rappels. Si vous souhaitez utiliser les promesses JavaScript à la place, le module Axios fournit des fonctionnalités équivalentes.
Utilisez https://www.npmjs.com/package/request module.
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.
});
Vieux, mais je suis tombé sur ça en cherchant moi-même:
module de requête avec support de promesse est ( request-promise )