Reputation: 5039
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
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