RailsでebayのAPIを叩いてみた!

f:id:ihatov08:20160901214507j:plain

RailsでebayのAPIを使う方法です。

gem rebay

gemを作ってくれた人がいるので、使わせてもらいます。

github.com

Gemfile

gem 'rebay'
bundle intall

configファイル

設定ファイルを作ります。

config/initializers/rebay.rb

Rebay::Api.configure do |rebay|
rebay.app_id = ENV['ebay_application_id']
end

.env

環境変数にapplication_idを記述します。

.env

ebay_application_id=取得したapplication_idを記述

vagrantを使用している場合は以下の記述も必要みたいです。

vagrantfile

config.vm.provision "file", source: ".env", destination: ".env"

vagrantを再起動しましょう。

rspecを使っているならrequireする必要があるようです。

spec_helper.rb

require 'dotenv'
Dotenv.load('.env')

ルーティング

routes.rb

 get 'ebay_search' => 'ebay#search'

コントローラ

今回は商品キーワード検索機能を実装してみたいと思います。gem rrbayに定義されているfind_items_by_keywordsメソッドを使います。
viewで入力してもらったparams[:keyword]を受け取るようにしています。

ebay_controller.rb

class EbayController < ApplicationController
def search
finder = Rebay::Finding.new
if params[:keyword]
@items = finder.find_items_by_keywords({ :keywords => "#{params[:keyword]}" })
end
end
end

viewのフォーム

<%= form_tag :ebay_search, method: :get do  %>
<table>
<tbody>
<tr>
<th><%= label_tag :keyword, 'キーワード検索' %></th>
        <td><%= text_field_tag 'keyword', params[:keyword] %></td>
</tr>
        <div class="btn-toolbar">
          <div class="btn-group">
            <td colspan="2"><%= submit_tag "検索", class: 'btn btn-default' %></td>
</div>
        </div>
</tbody>
  </table>
<% end %>

viewの検索結果

データ構造的にactive record的には取得できなかったです。
今回は商品名を表示してリンクにして、価格と商品画像を表示してみました。
他にも表示できる項目やflagがあるのでinspectメソッドで確認するか、コンソールでRebay::Finding.find_items_by_keywords({ :keywords => "iphone" })と入力して出力を確認するといいと思います。

<% if @items.present? %>
<% @items.each do |item| %>
<tr>
<td><%= link_to item["title"], "#{item["viewItemURL"]}" %></td>
      <td>$<%= item["sellingStatus"]["currentPrice"]["__value__"] %></td>
<td><%= image_tag item["galleryURL"] %></td>
    </tr>
<% end %>
<% end %>

APIって意外と簡単

APIってなんだか難しいイメージがありましたが、URLを叩いて情報を取得もしくは投稿する機能なんですね。仕組みさえわかれば意外と簡単に操作できます。肝心なのはAPIを使って情報をどう活用するかですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA