Node.js Node JS Express调用多个API并返回单个响应

Node.js Node JS Express调用多个API并返回单个响应,node.js,express,Node.js,Express,我对Node非常陌生,希望有人能帮我。 我有两个API是我的项目外部的。 我想在Node Express服务器中创建一个端点,返回两个调用的结果。 我该怎么做 到目前为止,我已经知道如何调用这样的外部资源 app.use('/myapi', function(req, res) { var url = 'https://some-service.com/api1'; res.setHeader('content-type', 'application/json'); req.pi

我对Node非常陌生,希望有人能帮我。 我有两个API是我的项目外部的。 我想在Node Express服务器中创建一个端点,返回两个调用的结果。 我该怎么做

到目前为止,我已经知道如何调用这样的外部资源

app.use('/myapi', function(req, res) {  
  var url = 'https://some-service.com/api1';
  res.setHeader('content-type', 'application/json');
  req.pipe(request(url)).pipe(res);
});
{ response1, response2 }
这会将结果返回到我的应用程序。我搞不懂的是如何进行第二次调用,然后将结果合并成这样的对象

app.use('/myapi', function(req, res) {  
  var url = 'https://some-service.com/api1';
  res.setHeader('content-type', 'application/json');
  req.pipe(request(url)).pipe(res);
});
{ response1, response2 }
有人知道怎么做,或者给我指出正确的方向吗? 还有一种方法可以确保在向我的应用程序发送响应之前两个调用都成功


谢谢。

您必须使用这样的功能,因为外部呼叫可能会占用他们自己的宝贵时间。您可以等待呼叫完成并发送最终响应

您可以将路线更新为以下内容:

app.use('/myapi',函数(req,res){
var url='1〕https://some-service.com/api1';
res.setHeader('content-type','application/json');
var responseOne=await CallFirstSystem();
var responsewo=await CallSecondSystem();
var finalResponse=doSomeLogic(responseOne,ResponseToVo);
res.send(最终响应);

});我相信您必须使用promise库的方法来实现这一点,例如“promise.all”。它接受一系列承诺对象,并用一系列结果进行解析。将请求转换为
async
,并让这两个请求
等待
。相信我,您会在internet上找到很多关于如何实现这一点的文章。