#はじめに
Railsで楽天APIを使用して商品(本)の検索、商品情報の取得・表示をする方法をまとめました。
今回は、本を題名で検索し、ヒットした本の情報を一覧にして下に表示する形です。
#バージョン
・Ruby 2.7.0
・Rails 6.0.2.1
#実装手順
##アプリケーションIDの取得
楽天API情報を使用するには、Rakuten Developersより
「新規アプリ登録」を行いアプリケーションIDを取得する必要があります。
簡単な情報を入力してすぐに取得することができます。
AmazonAPIは申請を行い審査を受ける(落ちることも多いようです)ので、この点が違いますね。
##gemをインストール
Ruby SDK(公式)に従って進めます。
Gemfileに下記追記して、bundle
でインストール。
gem 'rakuten_web_service'
##アプリケーションIDを設定
取得したアプリケーションIDを設定します。
config/initializers
フォルダの中にファイルを作成。
RakutenWebService.configure do |c|
# (必須) アプリケーションID
c.application_id = ENV['RWS_APPLICATION_ID']
# (任意) 楽天アフィリエイトID
c.affiliate_id = ENV['RWS_AFFILIATION_ID']
end
こちらも、Ruby SDK(公式)を参照してください。
タイミングによっては書き方が微妙に異なるようです。
##ビューの作成
.search-box
= form_with url: books_search_path, method: :get, local: true do |f|
.form-group
= f.text_field :keyword, class: "form-control"
= f.submit '本の題名を検索', class: "form-control btn btn-success"
- if @books.present?
= render 'books/book'
- @books.each do |book|
= book.title
= book.author
= book.item_caption
= link_to (image_tag(book.medium_image_url)), book.item_url
※フォーマットはかなり省いているので、適宜調整してください。
##コントローラーの作成
class BooksController < ApplicationController
def search
if params[:keyword]
@books = RakutenWebService::Books::Book.search(title: params[:keyword])
end
end
end
##ルーティングの設定
get 'books/search'
#題名検索→商品情報表示の流れ
上記コードで最低限の設定はOKのはずです。
本の題名を入力してから商品情報が表示されるまでの流れは下記のようになります。
①text_field_tag
に本の題名を入力して検索ボタンをおす
= form_tag(books_search_path, method: :get)
により、
books
コントローラーのsearch
アクションにいきます。
その際、入力した内容はparams[:keyword]
に格納されています。
②楽天APIを使用した検索が行われる
入力した値params[:keyword]
を引数としてsearch
メソッドで検索をかけ、
ヒットしたものを@books
に格納します。
今回は本の検索で絞りたかったため、RakutenWebService::Books::Book
としてます。
③再度ビューに展開する
検索結果が@books
に格納されたことにより、
ビューの- if @books.present?
がtrue
となり、パーシャルが表示されます。
パーシャルでは、上から本の「題名」「著者」「説明文」「画像(商品リンク)」を表示しております。
使用できるプロパティはまだまだたくさんあり、楽天ブックス書籍検索API に一覧があります。
#まとめ
検索結果から商品情報をビューの上でひっぱりだすところで苦戦しましたが、
公式に記載のパラメーターを落ち着いて確認することで対応ができました。
ご参考になりましたら幸いです。
#参考
●【Rails基礎】楽天APIで商品検索アプリを作ってみた
●Ruby on Rails で楽天商品ページを取得してみた