如何在node.js中发出发布请求

时间:2019-06-25 10:55:07

标签: javascript node.js post module request

我正在尝试向api发送发布请求,并且似乎没有任何输出。 尽管我不知道我的请求格式是否正确,但我正在使用用于node.js的请求模块。

我没有做太多尝试,但是在我的请求中只是多种安排

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");
};

因此,在控制台中,当我没有收到下面的信息时,我希望接收到“ here4”的输出,这是我收到的控制台输出:

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

如果有帮助,我返回的值将为null。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

UrlFetchApp.fetch()

您是否使用AWS lambda运行代码?

我猜想您的lambda在应用程序收到服务器的响应之前就完成了。 您可以尝试返回一个诺言,然后AWS将等待诺言被解决或拒绝。

REPORT RequestId: 725f96ad-13e0-4d8b-a469-76161c5df2e4 Duration: 4037.28 ms Billed Duration: 4100 ms Memory Size: 128 MB Max Memory Used: 92 MB

};

更新:

handler.js -用于描述lambda的文件

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;