【问题标题】:Express and Nodejs : Best way to call an external APIExpress 和 Nodejs:调用外部 API 的最佳方式
【发布时间】:2014-10-09 09:00:35
【问题描述】:

我是 Express 和 Nodejs 的新手。我正在尝试调用外部 api 来在页面上构建数据。有没有办法从 express 本身调用外部 api(我知道我可以使用 http 模块来做到这一点)但想确认这是最好的方法。同样,一旦我将 json 取回,我如何将其传递给视图。

现在我已经通过使用 express 加载视图(只是标题)并对 api 进行 jquery ajax 调用并填充数据来完成解决方法。

【问题讨论】:

  • 什么 API?一些 API 为 Node 构建了特定的库,您可以使用它们来连接到服务。通常你可以只用谷歌搜索“$API Node API”。

标签: javascript jquery node.js express


【解决方案1】:

首先,您需要在要填充它的控制器内部调用外部 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 和 async.map() 您为数组中的每个 url 应用相同的函数。您将自己形成最终结果
  • 是的,我已经做到了,它在请求返回 json 时工作,但如果任何一个请求失败/或返回错误数据,整个异步调用都会失败并出现错误。有没有办法只接受一个请求并开始其他响应
【解决方案2】:

我会编写一个对象来隐藏此数据获取(http 请求)的详细信息,并使用 superagent 进行 http 调用(只是因为它是一个不错的库)。

这样你可以:

  • 如果您决定使用其他东西,请稍后替换 http 请求。
  • 按照 monkeyinsight 的建议隐藏细节,例如使用 node-async

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2015-03-26
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多