我已经创建了 AWS Lambda 函数。想在我的 Lambda 函数中使用 REST API 调用。是否有关于如何使用 Node.js 将其连接到 REST API 的参考文献?
我已经创建了 AWS Lambda 函数。想在我的 Lambda 函数中使用 REST API 调用。是否有关于如何使用 Node.js 将其连接到 REST API 的参考文献?
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();
});
}
如果你想在Lambda函数中调用REST API,可以使用request包:
通过npm安装request包: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);
}
});
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) => {
...
});
})
}
// index.mjs
export const handler = async(event) => {
const res = await fetch('https://nodejs.org/api/documentation.json');
if (res.ok) {
const data = await res.json();
console.log(data);
}
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
如果您想了解如何使用nodejs在lambda中创建HTTP rest端点,这里有一个示例。 https://github.com/serverless/examples/tree/master/aws-node-simple-http-endpoint
如果您想了解如何在lambda中使用nodejs访问外部API,这里有一个示例。
https://github.com/robm26/SkillsDataAccess/blob/master/src/CallService/index.js
希望这能有所帮助。