如何使用Request-Promise将一个API的响应作为另一个API中的请求参数传递

时间:2018-10-05 08:29:54

标签: javascript node.js node-request request-promise

我想使用Request-Promise NodeJs模块将从一个API接收到的响应作为请求参数传递给另一个API。有人可以帮我吗?我在下面简要介绍了示例代码:

var Sequence = {

        test1: function (param) {
            return request({
                "method": "POST",
                 "uri": baseURL+"/v1/" + userID + "/test/info/",
                "json": true,
                "headers": {
                    "Accept": "application/json",
                },
            }).then(function (result) {
                return result.pairingInfo // I want to use this pairinfInfo param in another request
            })

test2 : function (param) {

           return request({
                "method": "POST",
                "uri": baseURL+"/v1/passenger/" + userID + "/test/test/",
                "json": true,
                "headers": {
                    "Accept": "application/json",
                },
                "qs": {
                    **"pairingInfo": pairingInfo**,//This pairingInfo would come from the returned result.pairingInfo of test 1 API call
                }
            })

        }
        },

How can I achieve this?

3 个答案:

答案 0 :(得分:1)

您可以使用this,因为您在return方法中有一个test1()语句。因此,只需触发它即可获取它:

"qs": {
     "pairingInfo": this.test1(),
}

答案 1 :(得分:0)

Fragment

//您将返回带有第一个承诺的paringInfo,因此可以在.then()方法中使用它。

答案 2 :(得分:0)

使用此功能:

const sequence = async (baseURL, userID) => {
try {
    let options1 = {
        method: 'POST',
        uri: baseURL + '/v1/' + userID + '/test/info/',
        json: true,
        headers: {
            Accept: 'application/json'
        }
    };

    let pairingInfo = await request(options1);
    if (pairingInfo) {
        let options2 = {
            method: 'POST',
            uri: baseURL + '/v1/passenger/' + userID + '/test/test/',
            json: true,
            headers: {
                Accept: 'application/json'
            },
            qs: {
                pairingInfo: pairingInfo //This pairingInfo would come from the returned result.pairingInfo of test 1 API call
            }
        };

        await request(options2);
        return true;
    } else {
        console.log('Request 1 failed');
        return false;
    }
} catch (err) {
    console.error(err);
    return false;
}

};