如何绕过公开可用 API 的速率限制

问题描述 投票:0回答:1

所以我正在尝试构建我的第一个完整网站,我对该网站的想法涉及使用公开可用的 API。唯一的问题是,大多数公共 API 都有每小时一定数量请求的速率限制,如果我从我的应用程序直接向他们的 API 发出请求,那么如果我有任何用户,我可能会耗尽请求。

我的问题是,有没有一种方法可以不依赖外部依赖来设计网站?我的想法是使用这个公共 API 来构建我自己的 API 服务,我的网站仅使用我需要的信息。我看到的唯一问题是公共 API 不断变化,因此我必须不断运行脚本来使用正确的数据更新我自己的 API,并且必须重新部署。从设计的角度来看,有什么干净的方法可以实现这一点吗?谢谢

rest api backend
1个回答
0
投票

因此,有几种方法可以处理 API 速率限制,具体取决于您正在构建的内容和应用程序的规模(从您的问题中我不太明白)。

这里有一些想法:

  1. 缓存:如果您的 API 数据不会一直变化,那么缓存是一个巨大的胜利。将数据存储在本地(Redis、内存中,无论适合什么)。您的应用程序保持快速,并且您访问 API 的频率降低。
  2. API 请求队列:引入一个队列,随着时间的推移将调用间隔开,而不是用请求淹没 API。这是一种保持在速率限制内的受控方式,而不会到处出现限制错误。
  3. 速率限制管理:某些 API 为您提供了监控使用情况的工具。如果允许,可以使用这些见解来分散请求或跨多个 API 密钥分配调用。如果您接近速率上限,这尤其有用。
  4. 退避和重试:简单但有效。设置指数退避,这样如果遇到速率限制错误,每次重试之前都会等待更长时间。与 API 服务器保持礼貌并减少重复达到限制的机会。
  5. 第三方解决方案:如果您正在使用更大规模或多个 API,像 Lunar.dev(我是联合创始人,为了充分披露)之类的东西可能会节省您大量时间。它管理速率限制、重试、排队和所有繁重的工作,因此您可以专注于核心逻辑,而不必担心达到这些限制。

如果您的应用程序较小或单实例,像 Polly (https://github.com/App-vNext/Polly) 或 Cockatiel (https://github.com/connor4312/cockatiel) 这样的库有很棒的功能对重试、退避和弹性模式的内置支持。

顺便说一句,我们写了很多关于此的文章,您可能会发现它们很有帮助:

希望对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.