2010-07-08 72 views
0

我打算使用Bit.ly Pro和Bit.ly API在Rails 3项目中创建自己的短网址。哪里可以在Rails应用中使用Bit.ly API调用

我有一个用户和一个笔记模型。像这样的网址结构:'/ username/1-note-title'。

现在我想给每个注释一个简短的网址。但是我不知道从哪里开始API调用。现在我在注意控制这个代码,但我不知道这是正确的地方或如何得到具体说明的网址...仅供参考

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" 
} 

帮助想要,在此先感谢!

回答

3

我似乎应该为给定用户创建一个新音符时创建一个短url。在这种情况下,它会发生在NotesController(通常)中create动作的结果。最佳实践表明,逻辑责任应该生存Note模型,所以我建议你做一个保存回调中实现的bit.ly缩短,无论是之前还是之后,取决于它的重要性(在特定应用的上下文中)缩短的URL存在。

面临的挑战是如何处理错误情况,即bit.ly服务无法响应您的缩短请求,或者这样做时间过长。那时候把它放在回调中可能没有意义,因为它可能会在尝试完成请求时绑定应用程序。

如果您不需要现场网址缩短,那么你可以考虑在background process创建缩短请求作为排队的作业进行异步完成(根据需要重试),并在上述after_save回调在Note模型

被触发
+0

谢谢,你知道after_save回调是否对创建和更新有效? – Alfred 2010-07-10 13:29:46

+0

@Alfred Nerstu是的。从文档引用(http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html#M001373):“after_save()...在Base.save之后调用(不管它是创建还是更新保存)。“ – bjg 2010-07-10 15:10:43

+0

啊,太好了,谢谢! – Alfred 2010-07-13 11:11:11

相关问题