Je suis relativement nouveau dans AWS lambda function et nodejs. J'essaie d'obtenir la liste des 5 villes d'un pays en utilisant la requête HTTP POST de ce site: " http://www.webservicex.net/globalweather.asmx?op=GetCitiesByCountry "
J'ai cherché comment faire une demande HTTP POST dans la fonction lambda mais je n'arrive pas à trouver une bonne explication pour cela.
Recherches que j'ai trouvées pour le post http:
https://www.npmjs.com/package/http-postComment faire une demande HTTP POST dans node.js?
Essayez l'exemple suivant en appelant la requête HTTP GET ou POST dans nodejs à partir d'AWS lambda
const options = {
hostname: 'hostname',
port: port number,
path: urlpath,
method: 'method type'
};
const req = https.request(options, (res) => {
res.setEncoding('utf8');
res.on('data', (chunk) => {
// code to execute
});
res.on('end', () => {
// code to execute
});
});
req.on('error', (e) => {
callback(null, "Error has occured");
});
req.end();
Considérons l'échantillon
J'ai eu du mal à mettre en œuvre les autres réponses, alors je publie ce qui a fonctionné pour moi.
Dans ce cas, la fonction reçoit les données url, path et post
Fonction Lambda
var querystring = require('querystring');
var http = require('http');
exports.handler = function (event, context) {
var post_data = querystring.stringify(
event.body
);
// An object of options to indicate where to post to
var post_options = {
Host: event.url,
port: '80',
path: event.path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(post_data)
}
};
// Set up the request
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('Response: ' + chunk);
context.succeed();
});
res.on('error', function (e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
});
// post the data
post_req.write(post_data);
post_req.end();
}
Exemple de paramètres d'appel
{
"url": "example.com",
"path": "/apifunction",
"body": { "data": "your data"} <-- here your object
}
Utilisez l'objet HTTP et utilisez POST
comme type de demande. Les requêtes HTTP dans AWS Lambda ne diffèrent pas des requêtes HTTP utilisant NodeJS.
Faites-moi savoir si vous avez besoin de plus d'aide.