【问题标题】:Nodejs request-promise combining json api data from 2 links?Nodejs请求承诺结合来自2个链接的json api数据?
【发布时间】:2021-02-15 08:40:54
【问题描述】:
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(来自它们的数据),但似乎无法弄清楚该怎么做。我需要创建一个数组吗?如果有怎么办?因此,我试图将来自不同 url(由于不同区域)的数据全部合并到一个可以访问的主页上。

【问题讨论】:

    标签: node.js json request request-promise


    【解决方案1】:

    你绝对不应该再使用request-promise,因为request-promise所依赖的request-module一直是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)]);
    }
    

    【讨论】:

    • @OP:有什么反馈吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多