【问题标题】:Where to put Bit.ly API call in Rails app在 Rails 应用程序中放置 Bit.ly API 调用的位置
【发布时间】:2010-07-08 22:47:19
【问题描述】:

我计划使用 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"
}

需要帮助,在此先感谢!

【问题讨论】:

    标签: ruby-on-rails model-view-controller bit.ly


    【解决方案1】:

    我似乎应该在为给定用户创建新笔记时创建短网址。在这种情况下,它会由于NotesController 中的create 操作而发生(通常)。最佳实践建议逻辑责任应该使用Note 模型,因此我建议您在保存回调之前或之后执行bit.ly 缩短,具体取决于它的重要性(在您特定的上下文中) app) 以使缩短的 URL 存在。

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多