推特API -如果超过速率限制
Twitter API - If Rate limit exceeded
我正在为自己开发一个Twitter web应用程序。我正在检索最新的热门话题。
我是这样做的:
$.ajax({
url: 'http://api.twitter.com/1/trends/1.json',
dataType: 'jsonp',
success: function(data){
$.each(data[0].trends, function(i){
$('div#trending').hide().append("<p><a href='"+data[0].trends[i].url+"'>"+data[0].trends[i].name+"</a></p>").fadeIn(1000);
//Cache into LocalStorage
localStorage["trending"+i] = data[0].trends[i].name; //Name
localStorage["trendurl"+i] = data[0].trends[i].url;//URL
});
}
});
但有时当我在开发它时,超过了速率限制。
如何检测是否已超过速率限制?
我似乎无法检测到这个错误是否正在显示:
{"error":"Rate limit exceeded. Clients may not make more than 150 requests per hour.","request":"'/1'/trends'/1.json"}
我已经试过了:
success: function(data){
if(data[0].error != 'undefined'){
//load localstorage cache
}
}
但这似乎不起作用。请帮助。
谢谢:)
当速率受限时,Twitter API会发送HTTP 400状态码,所以请检查:
$.ajax({
// ...
statusCode: {
400: function() {
alert( 'rate limited.' );
}
}
});
还要注意你的比较有点错误。当错误文本为而不是 'undefined'
时,data[0].error != 'undefined'
总是返回true。所以,即使你是速率限制,错误文本不会是'undefined'
,因此成功。您可能想要检查的是:
if ( !data[0].error ) { // data[0].error is not null
// ...
}
尝试像美元. ajax({…}). fail(函数(){});
。
$.ajax({..})
.done(function() { alert("success"); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
让我知道它现在是如何工作的。
欢呼,/Marcin
如果您不拨打OAuth电话,您将被限制为每小时150个电话。但是,有一个小的变通方法对我很有效。
根据Twitter关于速率限制(http://dev.twitter.com/docs/rate-limiting)的页面,"速率限制应用于使用HTTP GET命令请求信息的方法。一般来说,使用HTTP POST向Twitter提交数据的API方法不受速率限制,但现在有些方法受到了速率限制。"
由于AJAX调用的默认类型是'GET',请尝试显式地将类型更改为'POST',如下所示:
$.ajax({
url: 'http://api.twitter.com/1/trends/1.json',
type: 'POST',
dataType: 'jsonp',
success: function(data){
$.each(data[0].trends, function(i){
$('div#trending').hide().append("<p><a href='"+data[0].trends[i].url+"'>"+data[0].trends[i].name+"</a></p>").fadeIn(1000);
//Cache into LocalStorage
localStorage["trending"+i] = data[0].trends[i].name; //Name
localStorage["trendurl"+i] = data[0].trends[i].url;//URL
});
}
});
希望这对你有帮助!
詹姆斯相关文章:
- 如何更改bigquery API中的计费层选项
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 使用Facebook live API创建实时视频对象时的隐私设置
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- API密钥使用和检查示例
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 谷歌地图JS API+JSON-多个标记没有显示
- 在 iOS 7+ 的 UIWebView 中使用语音合成 API 设置速率、音高、音量
- 在连接到 Web 音频 API 的音频元素上设置播放速率
- 推特API -如果超过速率限制
- 在node.js中限制API查询的速率
- Google Script外部API访问403s“速率限制”
- 当达到第三方API的速率限制时,jQuery/AAJAX设置超时
- 如何在特定时间跨度内进行具有速率限制的异步 API 调用
- 如何在页面重新加载的情况下限制api调用的速率?
- 对Twitter API进行身份验证调用,以避免速率限制