2012-10-28 26 views
14

Jestem nowy w świecie szyn i próbuję zbudować aplikację, aby umożliwić mi wyszukiwanie rzeczy w Amazon i takich witrynach na podstawie danych wprowadzanych przez użytkowników.Używanie szyn do korzystania z usług sieciowych/apis

Zrobiłem mały reasearch i wydaje się, że klejnot httparty jest dobrym miejscem do rozpoczęcia? Dokumenty znalezione do tej pory nie są jednak najlepsze. Tak naprawdę nie dają mi wielu informacji (gdzie umieścić kod itp.).

Czy istnieją jakieś tutoriale lub przykłady kodu, które mogę wykorzystać lub spojrzeć, aby lepiej zrozumieć, jak to działa?

+0

Najlepszym miejscem do rozpoczęcia jest nauczenie się Railsów i MVC oraz elementów modelu, widoku i kontrolera. Kiedy już to zrozumiesz, odpowiedź na to pytanie powinna być dla ciebie prosta. –

Odpowiedz

29

Obecnie pracuję nad taką aplikacją, więc podzielę się z nami kilkoma przemyśleniami.

Po pierwsze, jeśli jesteś kompletnym nowicjuszem Rails, to jako pierwszy krok Sugerowałbym biorąc równoległe podejście do problemu, z dwoma utworami:

  1. Informacje na temat Rails
  2. Dowiedz o tym, jak współdziałać z interfejsem API (wywoływać żądania i analizować odpowiedzi) w Rubiu

Są to dwa osobne problemy i chociaż możesz skończyć je razem, najlepiej najpierw pomyśleć o nich w izolacji.

Po pierwsze proponuję napisać kilka prostych aplikacji, aby najpierw zorientować się, jak działają. Nawet tylko prosta aplikacja będzie wymagać pewnej interakcji z użytkownikiem, prawdopodobnie zapisując rekordy do bazy danych itp., Problemów, które są oddzielone od zużywania danych z interfejsu API. Istnieje nieskończona liczba tutoriali na Railsach, ale żeby wspomnieć o jednym, możesz wypróbować numer Learn Web Development with Rails Michaela Hartiego jako punkt wyjścia.

Drugi punkt, zużywający dane API, różni się od problemów związanych z projektowaniem samej aplikacji. Aby dowiedzieć się więcej na temat tego aspektu problemu, proponuję użyć popularnego klejnotu klienta API (jak wspomniano) HTTParty, którego używam sam. Zamiast od razu spróbuj użyć metod HTTParty w aplikacji Rails, jako ćwiczenie proponuję trochę pobawić się w konsoli (irb). Jeśli zainstalujesz klejnot (gem install httparty), możesz go zażądać (require 'httparty') z konsoli i natychmiast wykonać żądania i przeanalizować odpowiedzi z interfejsów API.

Np .:

irb(main):001:0> require 'httparty' 
=> true 
irb(main):002:0> response = HTTParty.get('http://twitter.com/statuses/public_timeline.json') 
=> ... 

Gdy już nieco bardziej zaznajomieni z Rails i dostępu do API w Ruby, a następnie można przejść do rzeczywistości budowę samej aplikacji. W zależności od tego, jak skomplikowany wasze prośby do API (ów) będzie, masz kilka opcji, jak uporządkować swoje żądania API w swojej aplikacji Rails:

  1. Bądź podania część samej aplikacji Rails , bezpośrednio z działań kontrolera. Jest to naprawdę tylko w porządku, jeśli zamierzasz obsługiwać tylko ograniczoną liczbę typów żądań (np. Proste wyszukiwanie) w ograniczonej liczbie usług. Wszystko, co jest bardziej skomplikowane, a kontroler będzie gruby, co nie jest możliwe w frameworkach MVC.
  2. Utwórz oddzielną klasę ruby ​​(zwykle nazywaną wrapper API), aby zgrupować metody składania żądań i analizowania odpowiedzi za pomocą interfejsu API. Z takim klejnotem jak HTTParty możesz to zrobić, dodając w klasie linię include HTTParty, która dodaje moduł do klasy. Istnieje wiele przykładów, jak to zrobić, here is one.
  3. Użyj dedykowanego klejnotu, aby uzyskać dostęp do określonych interfejsów API lub utwórz jeden (lub więcej) sam. Istnieją klejnoty dla najpopularniejszych usług, np. Twitter, Linkedin, Flickr itp. Więcej informacji można znaleźć w części this list of API client gems. To pochłania dużo bólu podczas interakcji z interfejsem API, ale działa tylko w przypadku podzbioru wszystkich usług.

Wspomniałeś, że myślisz o używaniu HTTParty, co mogę polecić, ponieważ sam go używam. Istnieją alternatywy, takie jak Faraday (więcej: patrz: this list of HTTP clients), ale uważam, że dla większości zadań HTTParty będzie dobrze. Dokumentacja może być trochę skąpa, ale jest kilka examples, z których możesz pracować.

Nadzieję, że pomaga!

+0

to było PERFECT! Dzięki! – Keva161