我目前正在开发一个与 Twitter 配合使用的应用程序,但是在开发/测试时(尤其是那些不严重依赖真实 Twitter 数据的部分),我想避免经常访问 API 或发布垃圾推文。
人们是否有一个通用的策略来简化 API(缓存除外)?我正在考虑推出我自己的库,该库基本上会拦截传出请求并返回模拟响应,但我想先确保我没有遗漏任何明显的东西。
我目前正在开发一个与 Twitter 配合使用的应用程序,但是在开发/测试时(尤其是那些不严重依赖真实 Twitter 数据的部分),我想避免经常访问 API 或发布垃圾推文。
人们是否有一个通用的策略来简化 API(缓存除外)?我正在考虑推出我自己的库,该库基本上会拦截传出请求并返回模拟响应,但我想先确保我没有遗漏任何明显的东西。
我可能会从模拟您的应用程序所需的 API 的特定部分开始。事实上,这实际上可能会迫使您为您的应用程序提出一个更简洁的设计,因为它或多或少地要求您从应用程序“应该做什么”而不是“应该如何”做的角度来考虑您的应用程序。
例如,如果您使用 Twitter 搜索 API,那么您的应用程序很可能不应该关心您使用的是 JSON 还是 Atom 格式选项。使用给定查询搜索 Twitter 并返回结果的能力代表了您想要的功能,因此您应该在该抽象级别模拟 API。输出格式只是一个实现细节。
通过在功能方面而不是在低级实现细节方面模拟 API,您可以确保应用程序在您真正连接到 Twitter 之前执行您期望它执行的操作。那时,您已经验证了应用程序是否按预期工作,所以剩下的唯一事情就是编写代码来发出 REST 请求并解析响应,这应该相当简单,所以您可能不会结束那时用大量垃圾数据访问 Twitter。
缓存可能是最好的解决方案。除此之外,我相信 API 限制为每小时 100 个请求。因此,也许可以创建一个函数来持续计算每个请求,当它接近 100 时,它会说,好的,每 10 个 API 请求我将提取数据。它不会很难设置,可能是一个梯度函数,当你接近极限时会停止。
我使用了 Tweet#,它缓存并应该做你需要的一切,因为它覆盖了 100% 的 twitter api,然后......
http://dimebrain.com/2009/01/introducing-tweet-the-complete-fluent-c-library-for-twitter.html
在数据库中缓存内容...如果缓存太旧,则通过 API 请求最新数据。
Also think about getting your application account white-listed, it will allow you to have a 20,000 api request limit per hour vs the measly 100 (which is made for a user not an application).