13
votes

i have created aws lambda function. i want to use rest api calls inside my lambda function. Is there any reference how to connect it to rest api using nodejs

4
You just forget lambda function and call rest api using nodejs. - hoangdv
i am new to nodejs, is there any samples available for calling rest api using ngrok - praveen Dp
Did you get a solution for this? If yes please update it as your answer. I am also trying to implement the same. - Sreejith Sree

4 Answers

4
votes

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();
  });
}
3
votes

If you want to call rest api inside lambda function, you can use request package:

install request package via npm: https://www.npmjs.com/package/request

Then inside lambda function try this to call 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);
        }
    });
1
votes
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) => {
        ...



       });
    })
}
-3
votes

If you are asking about creating a HTTP rest endpoint in lambda using nodejs. Here is the example. https://github.com/serverless/examples/tree/master/aws-node-simple-http-endpoint

If you are asking about access an external API inside lambda using nodejs. Here is an example.

https://github.com/robm26/SkillsDataAccess/blob/master/src/CallService/index.js

Hope this helps.