2010-01-21 24 views
5

Im xây dựng ứng dụng đầu tiên của tôi trong đường ray và tôi muốn gọi API của FlickrLàm cách nào để gọi API (ví dụ: API Flickr) trong Ruby on Rails? Newbie câu hỏi

Tôi biết tôi có thể sử dụng flickr-fu, rflickr hoặc đá quý khác nhưng tôi muốn làm điều đó bản thân mình từ đầu để học

Nói, ví dụ, tôi muốn gọi flickr.photos.comments.getList trả về các nhận xét cho một bức ảnh. Các đối số là api_key và photo_id. Tôi có cả hai.

tôi sẽ nhận được phản ứng như một 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>` 

Tôi muốn để lưu trữ các dữ liệu nhận được bằng cách gọi phương pháp vào một biến comments mà tôi có thể truy cập vào dữ liệu sử dụng, ví dụ,

comments.all.first.author_name = "Rev Dan Catt" 

hoặc

comments.all.first.content = "Umm, I'm not sure, can I get back to..." 

thế nào có thể Tôi làm việc này? Hãy kiên nhẫn (xin lỗi vì câu hỏi noob)

Trả lời

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 

và sau đó gọi

Flickr.getPhotos('12345678') 
1

Trước tiên, bạn cần một loại trình phân tích cú pháp XML để xử lý dữ liệu bạn có. Nokogiri là một trình phân tích cú pháp được sử dụng nhiều, nhưng nó có thể hơi quá nhiều. Trong trường hợp đó, hãy tìm một cái đơn giản hơn.

Điều này là đủ.

Nhưng nếu bạn thực sự muốn được thể hiện như bạn đề xuất trong ví dụ của bạn, bạn cần phải (đệ quy) lặp qua tài liệu XML của bạn và đặt nó vào một cấu trúc nào đó. Hãy xem Ruby access magic để xem cách bạn có thể tạo cấu trúc động như vậy. Một khả năng khác là tạo các lớp cho tất cả các nhóm chi tiết (như flickr-fu), điều này hiệu quả hơn nhiều vì dữ liệu được biết trước.

PS Bạn có thể ăn gian một chút bằng cách xem xét các giải pháp khác, theo cách này bạn vẫn sẽ tự học cách tự làm, nhưng bạn không cần phải phát minh lại bánh xe hoàn toàn. Trong thực tế kết hợp ý tưởng của một số triển khai và bạn có thể đến với một cái gì đó thậm chí còn tốt hơn!

Các vấn đề liên quan