问题描述
const express = require('express');
const app = express();
const path = require('path');
const config = require('./config.json');
const moment = require('moment');
const request = require('request-promise');
url = 'https://ne.api.site',url2 = 'https://n2.api.site',app.set('view engine','pug');
app.use(express.static(path.join(__dirname,'public')));
async function getApi(){
return request({
url : url,url2 : url2
});
}
/* Routes */
app.get('/',async (req,res) => {
let api = await getApi();
let json = await JSON.parse(api);
res.render('home',{ api: json,moment: require('moment')});
});
app.listen(4800,() => console.log('Express listening on port 4800'));
我正在尝试结合2个json api url(来自它们的数据),似乎无法弄清楚该怎么做。我需要创建一个数组吗?如果可以,怎么办?因此,我试图将来自不同网址(由于区域不同)的数据全部组合到一个可以访问的主页上。
解决方法
您绝对不应再使用request-promise
,因为请求承诺所依赖的请求模块已经deprecated。现在,回答您的问题。.假设您将superagent用作http请求模块,则可以执行以下操作:
const request = require('superagent');
const moment = require('moment');
app.get('/',async (req,res) => {
// responses will be an array of the resolved responses of the two calls
const responses = await getApi();
res.render('home',{ api: responses,moment: moment() });
});
function requestApis() {
return Promise.all([request.get(url),request.get(url2)]);
}