2010-01-21 56 views
5

林建設我在軌第一個應用程序,我想打電話給Flickr的API如何在Ruby on Rails中調用API(例如Flickr API)?新手問題

我知道我可以使用Flickr的福,rflickr或其他寶石,但我想從頭開始做我自己學習

舉例來說,我想打電話flickr.photos.comments.getList,返回照片的評論。參數是api_key和photo_id。我都有。

我會得到一個響應作爲XML

<comments photo_id="109722179"> 
<comment id="6065-109722179-72057594077818641" author="[email protected]" 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問題)

回答

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

首先,您需要某種XML解析器來處理您獲得的數據。 Nokogiri是一個非常常用的解析器,但它可能有點太多了。在這種情況下找一個更簡單的。

這應該夠了。

但是如果你真的想在你的例子中被表示,你需要(遞歸地)遍歷你的XML文檔並把它放在一些結構中。看看Ruby access magic,看看你如何動態構建這樣的結構。另一種可能性是爲所有細節組創建類(如flickr-fu所做的那樣),由於數據事先已知,因此效率更高。

PS您可以通過尋找其他解決方案來作弊,這種方式您仍然可以自己學習,但是您不需要完全重新發明輪子。事實上,結合幾種實現的想法,你可能會想出更好的東西!