我在rails中构建我的第一个应用程序,我想调用Flickr的API
我知道我可以使用flickr-fu,rflickr或其他宝石但我想从头开始学习
比如说,我想调用flickr.photos.comments.getList
来返回照片的评论。参数是api_key和photo_id。我有两个。
我会将响应作为xml
<comments photo_id="109722179">
<comment id="6065-109722179-72057594077818641" author="35468159852@N01" authorname="Rev Dan Catt" datecreate="1141841470" permalink="http://www.flickr.com/photos/straup/109722179/#comment72057594077818641">
Umm, I'm not sure, can I get back to you on that one?</comment>
</comments>`
我想通过调用该方法将收到的数据存储到变量comments
中,我可以使用,例如,
comments.all.first.author_name = "Rev Dan Catt"
或
comments.all.first.content = "Umm, I'm not sure, can I get back to..."
我该怎么办?请耐心等待(对于noob问题抱歉)
答案 0 :(得分:12)
include 'rubygems'
include 'httparty'
class Flickr
include HTTParty
base_uri 'api.flickr.com'
def self.getPhotos(uid)
return get('/services/rest/', :query => {
:method => 'flickr.people.getPublicPhotos',
:api_key => 'api key goes here',
:user_id => uid})
end
end
然后致电
Flickr.getPhotos('12345678')
答案 1 :(得分:1)
首先,您需要某种XML解析器来处理您获得的数据。 Nokogiri是一个使用得很多的解析器,但它可能有点过多。在那种情况下找一个更简单的。
这应该足够了。
但是如果你真的希望按照你在你的例子中的建议来表示,你需要(递归地)迭代你的XML文档并将它放在某种结构中。看一下Ruby access magic,了解如何动态构建这样的结构。另一种可能性是为所有细节组创建类(如flickr-fu所做的那样),由于数据事先已知,因此效率更高。
PS 你可以通过寻找其他解决方案来作弊,这样你仍然可以自己学习,但你不需要完全重新发明轮子。实际上结合了几个实现的想法,你可能会想出更好的东西!