【问题标题】:Multiples Calls to REST API or One Call with large response body with Javascript使用 Javascript 多次调用 REST API 或一次调用具有大型响应正文
【发布时间】:2015-09-09 15:57:11
【问题描述】:

为了减少响应时间或缩短用户在呈现视图时等待数据的时间,我试图确定与 REST API 交互的最佳方式。我将得到一个包含 5-7 个字段的项目数组,例如名称,标题,imgUrl。我可以拨打一个大电话并遍历响应以获取我需要的数据,也可以发出 5-7 次请求以获取我需要的确切信息。

打大电话有两个问题。

  1. 每个项目都会返回大量数据。我测试了检索 3 个项目,耗时约 899 毫秒。
  2. 我需要的字段不能简单地被一个键引用。每个项目都作为字段数组返回。每个字段都是一个对象,我只能通过遍历每个对象并读取其 field_id 来确定我需要哪些字段。它的返回是这样的:

    项目:[ { ... field_id: 3423423, ... }, { ... field_id: 343434, ... } ... ]

我宁愿发送一个带有 item_id 和 field_id 的请求,我会得到我需要的字段,但我必须进行 7 次这样的调用。哪个更好?

【问题讨论】:

  • 需要更多信息。 “更好”是如何定义的?时钟时间? CPU周期?数据占传输字节数的百分比?
  • 我正在使用 phonegap/cordova 开发一个移动应用程序。那只会使用4G。这对所有人都有帮助吗?
  • 哪些指标对您来说最重要?您想减少传输字节数、减少服务器 CPU 周期、减少客户端 CPU 周期、减少请求/响应时间吗?你还没有告诉我们目标是什么。
  • @JonathanM 我正在​​尝试缩短响应时间。我为歧义道歉。我刚刚编辑了我的回复。

标签: angularjs node.js cordova podio


【解决方案1】:

我最近不得不做出类似的决定,最终我在后端添加了一些方法,将数据打包成更适合消费的格式。如果你能做到这一点,我会推荐这种方法。

我怀疑 API 超出了您的控制范围。在这种情况下,我可能会使用多个异步调用,以便您可以在检索数据时提供反馈。使用异步调用和承诺,您可以让所有单独的部分在后台以它们进入的任何顺序被检索,然后从那里组装它们。

【讨论】:

  • 这最终为我找到了最好的方法。因为我无法控制我使用的 API,所以我承诺进行多次 API 调用。
猜你喜欢
  • 2018-03-03
  • 2016-06-12
  • 2021-12-03
  • 1970-01-01
  • 2017-08-25
  • 2010-11-14
  • 2020-04-22
  • 2018-11-07
  • 1970-01-01
相关资源
最近更新 更多