Alex Ironside
Alex Ironside

Reputation: 5039

Headers in API call in node

That's probably a stupid question but how to I add a header to an API call? I am trying to get this https://docs.aws.amazon.com/AlexaWebInfoService/latest/ApiReference_TrafficHistoryAction.html to work. So far I have this:

let alexaCall = `https://awis.amazonaws.com/api?Action=UrlInfo&Url=${website}&ResponseGroup=Rank`;

function(callback) {
  // third call
  var results = '';
  https.get(alexaCall, resource => {
    resource.setEncoding('utf8');
    resource.on('data', function(data) {
      // results += JSON.parse(data);
      results += data;
    });
    resource.on('end', function() {
      callback(null, results);
    });
    resource.on('error', function(err) {
      callback(err);
    });
  });
},

I'm supposed to use this header, but have no idea how to

Authorization: AWS4-HMAC-SHA256 Credential=<IAM_ACCESS_KEY>/20171114/us-west-1/awis/aws4_request, SignedHeaders=host;x-amz-date, Signature=<GENERATED_AUTH_V4_SIGNATURE>
Content-Type: application/xml
X-Amz-Date: 20171114T190104Z
Accept: application/xml

Upvotes: 0

Views: 92

Answers (1)

Terry Lennox
Terry Lennox

Reputation: 30675

You can do this to set headers:

var https = require('https');
var url = require('url');

var urlObject = url.parse('https://awis.amazonaws.com/api?Action=UrlInfo&Url=${website}&ResponseGroup=Rank');
console.log(urlObject);

const options = {
  host: urlObject.host,
  protocol: urlObject.protocol,
  path: urlObject.path,
  headers: {
    'Authorization': 'some-key',
    'Accept': 'application/xml',
    'Content-Type': 'application/xml'
  }
};


https.get(options, resource => {
    resource.setEncoding('utf8');
    resource.on('data', function(data) {
      // results += JSON.parse(data);
      results += data;
    });
    resource.on('end', function() {
      callback(null, results);
    });
    resource.on('error', function(err) {
      callback(err);
    });
  });
}

Upvotes: 1

Related Questions