【问题标题】:Is there a quicker way to make a Multi Page API Call?有没有更快的方法来进行多页 API 调用?
【发布时间】:2021-10-22 11:24:32
【问题描述】:

我正在尝试使用 Coingecko 提供的 API。我知道一个用来实现我想要做的事情的网站,但不知道他们是如何做到的。我想要一个包含市场数据的所有代币的列表,它需要一段时间,因为它是分页的,并且需要我迭代 40 多页。我所指的这个网站在加载后的几秒钟内设法拥有所有数据。我错过了什么?我尝试使用 Chrome Devtools 查看正在进行的网络调用,但看不到任何有用的信息。

【问题讨论】:

  • 您所指的网站可能已预取数据,并使用 UI 侧分页显示。
  • 数据肯定很快就出现了。你是说有一个后端服务器正在获取数据并在页面加载时将其提供给反应前端?
  • 是的,这是其中一种解释。仅凭您分享的这么多信息,很难指出这种行为差异的确切原因。
  • 嗯,这是网站。 www.marketcapof.com。如果您单击下拉框并搜索硬币,您几乎可以立即找到 9000 种硬币中的任何一种。我知道它一定是以某种方式获取了它们,因为它包含硬币的所有信息,例如图像和最新价格。

标签: reactjs api


【解决方案1】:

通过快速浏览评论中提到的网站,我发现他们正在向 coingecko 拨打两种电话:

  1. https://api.coingecko.com/api/v3/coins/markets?vs_currency=USD&order=market_cap_desc&per_page=250&page=1&sparkline=false

  2. https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&category=stablecoins&order=market_cap_desc&per_page=250&page=1&sparkline=false

第一次调用返回 250 个条目,第二次调用返回 50 个条目。

现在,如果您的应用程序无法从第一次调用中获取这 250 个条目,那么您的应用程序有问题。虽然我不能说您的问题符合 SO 准则,但如果这有帮助,我会很高兴。

【讨论】:

  • 是的,第一次调用检索到250,也就是第一页。总共有 9000 个硬币,因此您必须遍历大约 40 页才能全部获得。我感到困惑的是,下拉框是如何让我在这 9000 个硬币只取出前 250 个硬币时找到它们的。我需要几分钟才能把它们全部取出。
  • 实际上不是搜索超过9000个硬币,它只是搜索这250个硬币。如果您从下拉列表中一直向下走,您可以弄清楚这一点,他们可以选择扩展搜索,并发出警告,表明它可能会导致一些延迟。
  • 这只是为了填充下拉列表,但是如果您在前 250 个之外键入硬币的名称,它会立即显示出来,这意味着它已经为其获取了数据。
  • @BrianE 我的错,我又错过了一个电话:api.coingecko.com/api/v3/coins/list?include_platform=false,这是获取 9000 个条目列表的电话,你可以在你的应用程序中使用这个 API,看看是否响应就是你想要的。
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 2016-02-06
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多