【发布时间】:2019-05-13 07:35:10
【问题描述】:
当使用诸如 Twitter 或 Vimeo 之类的服务时,他们会对发生在 API 上的每个请求使用 API 速率限制,并且他们将返回(在响应的标头中)类似这个:
X-RateLimit-限制 X-RateLimit-Remaining X-RateLimit-重置
例如,在我的应用中,我会使用 Vimeo API 来处理很多事情......比如:
- 上传视频
- 编辑视频
- 获取视频
对于 Vimeo API 的每个请求,我必须检查 X-RateLimit-Remaining 值是否 > 0 以 继续 或返回 error 如果超过了速率限制。 (Vimeo API rate limit)。
是否有处理外部 API 速率限制的良好做法?
存储这些值的最佳位置是什么,以便我可以在需要时检索它们?
注意:Vimeo API 不只是在达到速率限制时返回错误,当我超过文档所说的限制时,它会禁止我的应用程序。所以我需要把它们存放在某个地方。 (#Vimeo API rate limit)。
【问题讨论】:
-
我认为由于 API 在标头中返回这些值,因此您每次都可以检查它。这意味着您不需要存储它们。如果我可能误解了你的问题,请告诉我。我认为即使是 github api 也允许您通过发送请求来检查您的限制:请参阅:developer.github.com/v3/rate_limit
-
@OluwatobiSamuelOmisakin Vimeo API 不只是在达到速率限制时返回错误,当我超过文档所说的限制时,它会禁止我的应用程序。所以我需要把它们存放在某个地方。 developer.vimeo.com/guidelines/rate-limiting我已经更新了我的问题。
-
Laravel 提供了一种使用节流中间件的方法laravel-news.com/laravel-5-6-dynamic-rate-limiting
-
@cbaconnier 这是用于内部 API 请求的。我正在使用外部 API。
-
我认为你可以使用缓存、会话或数据库来更新会话。
标签: laravel api vimeo-api rate-limiting