2012-10-28 12 views
14

私はレールの世界で初めてです。アマゾンやユーザーの入力に基づいてそのサイトを検索できるようにするためのアプリを作ろうとしています。レールを使ってWebサービス/ apisを消費する

私は少しreasearchをやったことがあります。それはhttparty gemが始めるのに適しているようですね。これまでに発見された文書iveは最高ではありません。彼らは本当に私に多くの情報を与えません(どこにコードなどを置く)。

そこに既存のチュートリアルやコード例がありますか?この機能がどのように機能するかをわかりやすく教えてください。

+0

まず、RailsとMVCを学び、モデル、ビュー、コントローラにどのようなものがあるのか​​をまず知ることです。あなたがそのハングアップを取得した後、この質問への答えはあなたに簡単に来るはずです。 –

答えて

29

私は今のようなアプリで作業していますので、少し考えてみましょう。

まずあなたがレールに完全な新人なら、最初のステップとして、私は2つのトラックで、この問題に対する並列的なアプローチを取ることをお勧めしたい:

  1. Railsの
  2. 学習について学びますRubyでAPIとやりとりする方法(リクエストを作成して応答を解析する方法)

これらは2つの別々の問題です。それらを一緒に実装することもできますが、最初に孤立して考えることをおすすめします。

まず最初に、いくつかの簡単なアプリケーションを作成して、まず動作の仕組みを理解することをお勧めします。単純なアプリでさえ、ある程度のユーザインタラクションが必要になります。おそらくDBからのレコードの保存など、APIからのデータの消費とは別の問題です。 Railsには数多くのチュートリアルがありますが、言及するだけで、Michael HartiのLearn Web Development with Railsを出発点としてお試しください。

APIデータを消費する第2のポイントは、アプリケーション自体の設計の問題とは異なります。この問題のこの側面について詳しく知りたい場合は、私が自分で使っているような(参考の通り)HTTPartyのような一般的なAPIクライアントの宝石を使うことをお勧めします。 RailsアプリケーションですぐにHTTPartyメソッドを使用しようとするのではなく、演習として私はコンソール(irb)でちょっと遊んでみることをお勧めします。宝石(gem install httparty)をインストールすると、コンソールからそれを要求し(require 'httparty')、即座に要求を出してAPIからの応答を解析できます。

例えば:

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

あなたはもう少しのRailsに精通持っているとルビーでAPIにアクセスすると、その後、あなたが実際にアプリ自体を構築する上で移動することができたら。 APIへのリクエストの複雑さに応じて、RailsアプリでAPIリクエストを構造化する方法についていくつかの選択肢があります:

  1. リクエストをRailsアプリケーション自体に含めます、コントローラの操作から直接。限定された数のサービスでごく限られた数のリクエストタイプ(単純検索など)しかサポートしない場合は、これは本当に問題ありません。複雑なものやコントローラが太ってしまうものは、MVCフレームワークのno-noです。
  2. リクエストを作成し、APIから応答を解析するためのメソッドをグループ化するために、別々のルビクラス(通常はAPIラッパーと呼ばれる)を作成します。 HTTPartyのような宝石では、クラスにモジュールを追加するクラスにinclude HTTPartyという行を追加するだけでこれを行うことができます。これを行う方法には多くの例があります。here is one
  3. 特定のAPIにアクセスするための専用の宝石を使用するか、独自の宝石を1つ(またはそれ以上)作成します。最も人気のあるサービスのための宝石があります。 Twitter,Linkedin,Flickrなどthis list of API client gemsを参照してください。これは、APIとのやり取りの苦労を取り除きますが、すべてのサービスのサブセットに対してのみ機能します。

あなたはHTTPartyを使用することを考えていますが、私は自分で使っているのでお勧めできます。 Faradayのような選択肢があります(詳細はthis list of HTTP clientsを参照してください)。しかし、ほとんどのタスクでHTTPartyがうまく動作します。ドキュメントは少しばかりであるかもしれませんが、あなたが作業できるexamplesの束があります。

希望に役立ちます!

+0

これは完璧でした!ありがとう! – Keva161

関連する問題