日期:2014-05-17  浏览次数:21008 次

求助!今天遇到一道面试题!关于第三方接口调用次数限制!
假设某个第三方的接口有调用次数限制(每小时100次),用户访问到的是我自己提供的接口,但我提供的这个接口数据来源于第三方接口(即为用户访问我的接口,便会调用第三方接口),并且我的这个接口会被用户频繁调用。问,如何避免或者防止第三方接口的限制?

这是今天java笔试的一道题,我没想到解决方案,我也没接触过这种接口。

麻烦各位大神了,提供下思路,有示例的最好(简单的示例即可,我不知道结贴时能不能加分,如果能我会贡献所有,因为我就200分)。
谢谢了!
接口 java 开放接口 web开发

------解决方案--------------------


//定时刷新
class Refures
{
//用于累加周期
long start = 0L;
long end = 0L;
//控制时钟周期
final long invet = 1000L*60*60L;
//这个运算可能要消耗1ms 忽略不计
boolean action()
{
//使用系统的计时器,永久有效。
start = System.currentTimeMillis();

if (start > end)
{
end = start + invet;
return true;
}
else
{
return false;
}
}
}

class YourInterface
{
static int callTimes = 0;
static Refures refures = new Refures();

//被调接口
static void youInterface()
{
//每1小时,就初始化一次
if (refures.action())
{
callTimes = 0;
}

callTimes++;

if (callTimes>=100)
{
return;
}

}
}

------解决方案--------------------
你的接口只需实例化一次第三方接口,只要你的接口不设置访问次数限制,用户就能无限实例化你的接口了吧,第三方设置访问次数应该只能限制第一层的子接口吧。
------解决方案--------------------
前段时间做的新浪微博的接口就有调用限制
------解决方案--------------------
这个你避免不了吧,你最多能做的就是等待一段时间再不断重试。
超过一定时间久返回给客户,给个稍后重试的提示。
------解决方案--------------------
同意楼上,楼主是不是没看清题目,如果要调用这个有限制的接口,限制总是存在,或者将100次机会在一小时内均匀分配倒是可以
------解决方案--------------------
引用:
你的接口只需实例化一次第三方接口,只要你的接口不设置访问次数限制,用户就能无限实例化你的接口了吧,第三方设置访问次数应该只能限制第一层的子接口吧。


我觉得二楼的能实现,第一次时只要将实例化给缓存起来,用户再调用时就取缓存里的就行了
------解决方案--------------------