0

我计划使用 Bit.ly Pro 和 Bit.ly API 在 Rails 3 项目中制作我自己的短网址。

我有一个 User 和一个 Note 模型。像这样的 url 结构:'/username/1-note-title'。

现在我想给每个笔记一个简短的 url。但我不知道我应该从哪里进行 API 调用。现在我在 Note 控制器中得到了这段代码,但我不知道那是否是正确的地方或者如何获取特定笔记的 url...

url = ???

parsed_json = JSON('http://api.bit.ly/v3/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&longUrl=' + url + '&format=json')

@short_url = parsed_json["data"]["url"]

JSON对象结构仅供参考:

{
  "status_code": 200, 
  "data": {
    "url": "http://bit.ly/cmeH01", 
    "hash": "cmeH01", 
    "global_hash": "1YKMfY", 
    "long_url": "http://betaworks.com/", 
    "new_hash": 0
  }, 
"status_txt": "OK"
}

需要帮助,在此先感谢!

4

1 回答 1

3

我似乎应该在为给定用户创建新注释时创建短 url。在那种情况下,它会作为(通常)中的一个create动作的结果而发生。NotesController最佳实践建议逻辑责任应该存在于Note模型中,因此我建议您bit.ly在保存回调之前或之后执行缩短,具体取决于缩短 URL 的重要性(在您的特定应用程序的上下文中)存在。

挑战在于处理错误情况,即bit.ly服务根本无法响应您的缩短请求或响应时间过长。那时将它放在回调中可能没有意义,因为它可能会在尝试满足请求时占用您的应用程序。

如果您不需要实时URL 缩短,那么您可以考虑在后台进程中将缩短请求创建为队列作业,以异步完成(必要时重试)并在模型中的上述after_save回调中触发Note

于 2010-07-09T00:00:22.503 回答