【发布时间】:2010-10-23 09:40:44
【问题描述】:
我目前正在开发一个与 Twitter 配合使用的应用程序,但在开发/测试时(尤其是那些不严重依赖真实 Twitter 数据的部分),我想避免经常访问 API 或发布垃圾信息推文。
是否有人们使用的通用策略来简化 API(缓存除外)?我正在考虑推出我自己的库,该库基本上会拦截传出请求并返回模拟响应,但我想首先确保我没有遗漏任何明显的东西。
【问题讨论】:
标签: web-services twitter
我目前正在开发一个与 Twitter 配合使用的应用程序,但在开发/测试时(尤其是那些不严重依赖真实 Twitter 数据的部分),我想避免经常访问 API 或发布垃圾信息推文。
是否有人们使用的通用策略来简化 API(缓存除外)?我正在考虑推出我自己的库,该库基本上会拦截传出请求并返回模拟响应,但我想首先确保我没有遗漏任何明显的东西。
【问题讨论】:
标签: web-services twitter
我可能会首先模拟您的应用程序所需的 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 请求最新数据。
还可以考虑将您的应用程序帐户列入白名单,这将允许您每小时有 20,000 个 api 请求限制,而 100 个(这是针对用户而非应用程序的)。
【讨论】: