我创建了aws lambda函数。我想在我的lambda函数中使用rest api调用。 有什么参考如何使用nodejs将其连接到rest api
答案 0 :(得分:2)
const https = require('https')
// data for the body you want to send.
const data = JSON.stringify({
todo: 'Cook dinner.'
});
const options = {
hostname: 'yourapihost.com',
port: 443,
path: '/todos',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length
},
};
const response = await doRequest(options, data);
console.log("response", JSON.stringify(response));
/**
* Do a request with options provided.
*
* @param {Object} options
* @param {Object} data
* @return {Promise} a promise of request
*/
function doRequest(options, data) {
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
res.setEncoding("utf8");
let responseBody = "";
res.on("data", (chunk) => {
responseBody += chunk;
});
res.on("end", () => {
resolve(JSON.parse(responseBody));
});
});
req.on("error", (err) => {
reject(err);
});
req.write(data);
req.end();
});
}
答案 1 :(得分:0)
如果您询问使用以下方法在lambda中创建HTTP Rest端点 nodejs。这是例子。 https://github.com/serverless/examples/tree/master/aws-node-simple-http-endpoint
如果您询问使用以下方法访问lambda内部的外部API nodejs。这是一个例子。
https://github.com/robm26/SkillsDataAccess/blob/master/src/CallService/index.js
希望这会有所帮助。
答案 2 :(得分:0)
如果要在lambda函数中调用rest api,则可以使用请求包:
通过npm安装请求软件包:https://www.npmjs.com/package/request
然后在lambda函数内部尝试使用此方法来调用rest api:
var req = require('request');
const params = {
url: 'API_REST_URL',
headers: { 'Content-Type': 'application/json' },
json: JSON.parse({ id: 1})
};
req.post(params, function(err, res, body) {
if(err){
console.log('------error------', err);
} else{
console.log('------success--------', body);
}
});
答案 3 :(得分:0)
const superagent = require('superagent');
exports.handler = async(event) => {
return await startPoint(); // use promise function for api
}
function startPoint(){
return new Promise(function(resolve,reject){
superagent
.get(apiEndPoint)
.end((err, res) => {
...
});
})
}