現在Webエンジニア転職のためポートフォリオ作成中のところ、コード記述で躓いたのでご教授お願いします!
起きている問題
楽天APIを用いて、指定したshopのアイテムをページネージョン機能を加えて、全て表示させたい。
コントローラーのAPI取得部分で時間がかかり過ぎのため、エラーまたはずっとロード時間が続いているので別のコードの書き方をご教授して頂きたい。
2,
ソースコード、ログ
rakuten.rb
class RakutensController < ApplicationController def index read = 1 while read = 13 @items = RakutenWebService::Ichiba::Item.search(shopCode: 'shop-senjin', page: read) @senjins = [] @items.each do |item| @senjins.push(item) end read = read + 1 end @senjins = Kaminari.paginate_array(@senjins).page(params[:page]).per(30) end
shop-sinjinのjson結果
], "pageCount": 12, "TagInformation": [], "hits": 30, "last": 30, "count": 357, "page": 1, "carrier": 0, "GenreInformation": [], "first": 1 }
コード説明
楽天のshop-senjinのアイテムを取得し、ページネーション機能を追加するためページネージョンのメソッドを使ったがRakutenWebServiceクラスだったためエラーが起きたのでRakutenWebServiceクラスからarrayクラスにメソッドに変換しました。
一回のリクエストにつき、30件のアイテムしか取得できないため、13回行えば、357件のアイテムを取得できると思い上記の記述で試しましたが、処理が重くなってしまっています。
問題解決するために試したこと
楽天APIの公式ページにも
※短い時間の間に大量に、同一のリクエストURLへアクセスすると、一定時間利用できなくなる場合がございます。テストの際にはご注意ください。
書いているため全件の取得は難しいかなとも思っていますがコードの書き方が悪いなら改善できるコードの書き方をご教授頂きたいです。
問題について考えたこと(デバッグ結果)
SPA化するのがおそらく最善の解決方法ではあるのかなと思いますが今からだと工数が多くかかってしまうため違うコードの記述方があれば教えて頂きたいです。
データ量が多く、重くなっているなら必要な値だけ、レスポンスとして返ってくる方法があれば少しは軽くなって動作するのではと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 14:09