假设我使用免费API服务,每 m 分钟限制 c 次。
我正在使用我的基本网站的主要html链接的一小部分javascript,其中包含以下内容:
$(function () {
//stuff
function getSomething() {
return $.ajax({
type: 'GET',
url: targetURL,
data: dataObject,
});
}
getSomething().done(function (returnedStuff){
//process returnedStuff
});
//more stuff
});
我有两个问题:
YES
,那么如何通过重复重新加载页面来阻止/限制用户/某些其他事件超过api限制。感谢您的帮助。
答案 0 :(得分:3)
tldr:从您的高级示例做出一些假设:
进一步说明: 取决于您的示例代码是否会访问您自己的服务器端代码,然后生成API代码...或者您是否直接从客户端调用API。如果在重新加载时调用该函数(文档就绪或其他),则它将在每次重新加载时执行。否则,显然只有当你调用方法时(比如通过按钮点击)。
请记住,客户端代码对客户端是可见的 - 因此,如果这是您的架构,那么您将API暴露给客户端。然后,我可以编写自己的javascript循环并重复调用您的API ...
我的假设是每次重新加载时都不需要刷新数据。考虑到这一点,我建议你做以下事情:
限制API调用的建议方法: 使用ajax调用您自己的服务器。 在服务器端,通过您选择的缓存来保存数据,并构建您自己的逻辑,以测试是否需要刷新数据(首次调用,超时后等)。
这样您就不会将API网址和详细信息公开给客户端,并且您可以控制对API的调用量。
出于优化目的,您还可以缓存数据客户端...但保留逻辑和API调用服务器端。
希望这有帮助!
ps。如果您需要一个示例,请提供您正在编码的平台,我将非常愿意为您提供快速示例!< / p>
pps。您可以简单地缓存客户端并从中调用API调用,并使用内置的逻辑来测试缓存 - 但显然任何人都可以调用您的API。