18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails6・楽天API】商品検索機能の実装手順

Last updated at Posted at 2020-03-15

#はじめに
Railsで楽天APIを使用して商品(本)の検索、商品情報の取得・表示をする方法をまとめました。
今回は、本を題名で検索し、ヒットした本の情報を一覧にして下に表示する形です。

#バージョン
・Ruby 2.7.0
・Rails 6.0.2.1

#実装手順

##アプリケーションIDの取得
楽天API情報を使用するには、Rakuten Developersより
「新規アプリ登録」を行いアプリケーションIDを取得する必要があります。
簡単な情報を入力してすぐに取得することができます。
AmazonAPIは申請を行い審査を受ける(落ちることも多いようです)ので、この点が違いますね。

##gemをインストール
Ruby SDK(公式)に従って進めます。
Gemfileに下記追記して、bundleでインストール。

Gemfile
gem 'rakuten_web_service'

##アプリケーションIDを設定
取得したアプリケーションIDを設定します。
config/initializersフォルダの中にファイルを作成。

rakuten.rb
RakutenWebService.configure do |c|
  # (必須) アプリケーションID
  c.application_id = ENV['RWS_APPLICATION_ID']
   
  # (任意) 楽天アフィリエイトID
  c.affiliate_id = ENV['RWS_AFFILIATION_ID']
  
end

こちらも、Ruby SDK(公式)を参照してください。
タイミングによっては書き方が微妙に異なるようです。

##ビューの作成

search.html.slim
.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'
_book.html.slim
- @books.each do |book|
  = book.title
  = book.author
  = book.item_caption
  = link_to (image_tag(book.medium_image_url)), book.item_url

※フォーマットはかなり省いているので、適宜調整してください。

##コントローラーの作成

books_controller.rb
class BooksController < ApplicationController
  def search
    if params[:keyword]
      @books = RakutenWebService::Books::Book.search(title: params[:keyword])
    end
  end
end

##ルーティングの設定

routes.rb
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 で楽天商品ページを取得してみた

18
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?