如何从API使用body

时间:2017-08-25 01:08:13

标签: node.js

这可能很可能是一个愚蠢的问题,但是在使用GET请求API数据之后你是如何使用body中的整数来执行一个函数,在这种情况下我想要将第3个数字从var数组1的主体中除去var array 2的主体数:

[4385.1,16.7770791,4385.3,12.74414776,261.2,0.0633,4385.3,23078.11968457,4390,4089.9] [326.5,15,326.51,0.01504489,10.9,0.0345,326.5,94510.58029456,329.56,314.14]

var request = require('request')

var array1 = request.get('https://api.bitfinex.com/v2/ticker/tBTCUSD',
function (error, response, body) {
    console.log(body)
});

var array2 = request.get('https://api.bitfinex.com/v2/ticker/tETHUSD',
function (error, response, body) {
    console.log(body)
});

1 个答案:

答案 0 :(得分:1)

如果这确实是你的回答:

[4385.1,16.7770791,4385.3,12.74414776,261.2,0.0633,4385.3,23078.11968457,4390,4089.9] [326.5,15,326.51,0.01504489,10.9,0.0345,326.5,94510.58029456,329.56,314.14]

然后,您需要首先使用JSON.parse()解析它,然后您可以访问数组中的数字。要在第一个请求完成后执行第二个请求,您可以将第二个请求嵌入到第一个请求中,然后您可以轻松地将两组数据放在同一个位置。

请注意,request.get()是异步的,因此您无法将结果分配给数组,就像您尝试的那样。

request.get('https://api.bitfinex.com/v2/ticker/tBTCUSD', function (err1, response, body1) {
    if (err1) {
        // error handling here
    } else {
        let array1 = JSON.parse(body1);
        request.get('https://api.bitfinex.com/v2/ticker/tETHUSD', function (err2, response, body2) {
            if (err2) {
                // error handling here
            } else {
                let array2 = JSON.parse(body2);
                // now you have both arrays here
                let answer = array1[2] / array2[2];
                // do something with answer here
            }                
        });
    }
});

更现代的方法是使用promises并使用request-promise库而不是request库,你甚至可以让库为你解析JSON({{ {1}}库也可以)。这会同时运行两个请求,然后request会告诉我们两个请求何时完成并按顺序给出两个结果:

Promise.all()