如何使用nodejs在aws lambda函数中调用rest api

时间:2018-07-24 06:30:03

标签: node.js amazon-web-services aws-lambda

我创建了aws lambda函数。我想在我的lambda函数中使用rest api调用。 有什么参考如何使用nodejs将其连接到rest api

4 个答案:

答案 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) => {
        ...



       });
    })
}