RailsでebayのAPIを使う方法です。
gem rebay
gemを作ってくれた人がいるので、使わせてもらいます。
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を使って情報をどう活用するかですね。
コメントを残す