Express和Nodejs:调用外部API的最佳方式

5

我对Express和Nodejs不是很熟悉。我正在尝试在页面上构建数据时调用外部API。是否有一种从Express本身调用外部API的方法(我知道可以使用http模块来实现),但想确认这是否是最佳方式。另外,一旦我收到JSON响应,如何将其传递给视图。

目前,我通过Express加载视图(仅标头),然后使用jquery ajax调用API并填充数据来解决问题。


什么是API?一些API有专门为Node构建的特定库,您可以使用这些库连接到服务。通常,您只需在Google中搜索“$API Node API”。 - Adam
2个回答

4

首先,您需要在控制器内调用外部API,以便在其中填充它。最好使用http模块,这很容易使用http://nodejs.org/docs/v0.4.10/api/http.html#http.get 。获取数据后,只需像这样将其传递给视图:

http.get(options, function(data) {
    res.render('template', data);
});

谢谢,但如果我想递归调用外部 API 来填充列表,该怎么办?我应该创建一个库并使用它来递归调用吗?然后,我将不得不合并所有数据响应以得出最终响应? - SaNmm
如果其中一个请求失败或返回损坏的数据,我是否会收到其他请求的响应? - SaNmm
使用async.map(),您可以为数组中的每个URL应用相同的函数。您将自己组成最终结果。 - monkeyinsight
是的,我已经做到了,当请求返回JSON时它可以工作,但如果任何一个请求失败或返回错误数据,则整个异步调用将失败并显示错误。有没有一种方法可以忽略一个请求并继续处理其他响应? - SaNmm

1
我会编写一个对象来隐藏数据获取的细节(http请求),并使用superagent进行http调用(只是因为它是一个很好的库)。
这样你就可以:
  • 如果决定使用其他东西,稍后替换http请求。
  • 隐藏详情,例如像monkeyinsight建议的使用node-async

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接