如何使用NodeJS服务器组合来自多个API的JSON数据

时间:2016-08-12 18:07:05

标签: node.js

我有一个NodeJS服务器,它从三个不同的API中获取数据,然后将三个API中的JSON发送到我的前端。由于我将三个API的数据标记为不同,因此它会以三个不同的数组发送(这里的错误术语可能是?)。如果可能的话,我试图将它们全部发送到一个阵列中!

代码:

var express = require('express');
var router = express.Router();
var request = require('request');
var app = express();

router.get("/", function(req, res){
var request = require('request-promise');
var data1;
var data2;
var data3;


request("http://api1.com").then(function(body){
data1 = JSON.parse(body);

return request("http://api2.com");
})
.then(function(body) {
    data2 = JSON.parse(body);


    return request("http://api3.com");
})
.then(function(body){
    data3 = JSON.parse(body);

    res.json("services.ejs", {data1: data1, data2: data2, data3: data3});
  })
});

module.exports = router;

结果:

{"data1":[{All JSON from API #1}] - "Data2":[{All JSON from API #2}] - "Data3":[{All JSON from API #3}]}

通缉结果:

{"allData": [{All JSON from API #1 #2 #3}]}

1 个答案:

答案 0 :(得分:4)

您可以将3种不同的结果连接成一个数组:

var alldata = data1.concat(data2).concat(data3);
res.json("services.ejs", {data: alldata});

根据您在结果中的确切要求进行相应调整。