Reputation: 25
I am trying to send a post request to an api and It seems I am getting nothing outputting. I am using the request module for node.js although I dont know if my request is formatted correctly.
I havent tried much but just multiple different arrangements in my request
exports.detectSong = function(base64) {
console.log("here1");
var request = require('request');
console.log("here2");
request({
url: 'https://audd.p.rapidapi.com',
method: 'post',
headers: { "X-RapidAPI-Host": "audd.p.rapidapi.com", 'X-RapidAPI-Key': '***************************************************' },
timeout: 10000,
body: JSON.stringify({
audio: base64,
method: 'recognize',
return: 'lyrics,timecode'
})
}, function(error, result, body) {
console.log("here3")
if (error) {
console.log(error);
} else if (result.statusCode === 500) {
console.log('error');
} else {
console.log(body);
}
});
console.log("here4");
};
So within the console i expect to recieve the output of 'here4' when I do not get this below is the console out put I recieve:
10:42:17
START RequestId: 725f96ad-13e0-4d8b-a469-76161c5df2e4 Version: $LATEST
10:42:17
2019-06-25T10:42:17.817Z 725f96ad-13e0-4d8b-a469-76161c5df2e4 INFO here1
10:42:21
2019-06-25T10:42:21.019Z 725f96ad-13e0-4d8b-a469-76161c5df2e4 INFO here2
10:42:21
2019-06-25T10:42:21.199Z 725f96ad-13e0-4d8b-a469-76161c5df2e4 INFO here4
10:42:21
END RequestId: 725f96ad-13e0-4d8b-a469-76161c5df2e4
10:42:21
REPORT RequestId: 725f96ad-13e0-4d8b-a469-76161c5df2e4 Duration: 4037.28 ms Billed Duration: 4100 ms Memory Size: 128 MB Max Memory Used: 92 MB
And if it helps the value I get returned is null.
Thank you for your help!
Upvotes: 0
Views: 708
Reputation: 26
REPORT RequestId: 725f96ad-13e0-4d8b-a469-76161c5df2e4 Duration: 4037.28 ms Billed Duration: 4100 ms Memory Size: 128 MB Max Memory Used: 92 MB
Are you using AWS lambda to run your code?
I guess that your lambda finished before your application recived response from a server. You can try to return a promise then AWS will wait while promise will be resolved or rejected.
exports.handler = function() {
var request = require('request');
var promise = new Promise(function (resolve, reject) {
request({
url: 'https://httpbin.org/post',
method: 'post',
body: JSON.stringify({})
}, function (error, result, body) {
if (error) {
reject(error)
}
resolve(body)
});
});
promise.then(function (result) {
console.log(result);
}).catch(function (err) {
console.error(err);
});
return promise;
};
Update:
handler.js - file that you use to describe your lambda
exports.handler = function(event, context, callback) {
console.log("here1");
var request = require('request');
console.log("here2");
var promise = new Promise(function(resolve, reject) {
request({
url: 'https://audd.p.rapidapi.com',
method: 'post',
headers: { "X-RapidAPI-Host": "audd.p.rapidapi.com", 'X-RapidAPI-Key': '***************************************************' },
timeout: 10000,
body: JSON.stringify({
audio: base64,
method: 'recognize',
return: 'lyrics,timecode'
})
}, function(error, result, body) {
console.log("here3");
if (error) {
console.log(error);
reject(error)
} else if (result.statusCode === 500) {
console.log('error');
reject(result.statusCode);
} else {
console.log(body);
resolve(body);
}
});
});
console.log("here4");
return promise;
};
Upvotes: 1