こんにちは!kossyです!
さて、今回はRubyの標準モジュールであるnet/httpsを使って、
GoogleBooksAPIを使う方法について、ブログに残してみたいと思います。
環境
Ruby 2.6.3
Rails 6.0.2.1
MacOS Mojave
GoogleBooksAPIから返却されるJSONを見てみる
下記のURLにアクセスしてみてください。
https://www.googleapis.com/books/v1/volumes?q=rails
JSON形式の文字が羅列されたページが表示されたかと思います。
GoogleBooksAPIで検索を行う場合、
https://www.googleapis.com/books/v1/volumes?q=検索したい語句
のように、クエリ文字列に検索したい語句を指定することで、JSON形式のレスポンスを受け取ることができます。
このレスポンスをよしなに加工して使ってみたいと思います。
コード全晒し
# lib/google_book_client.rb require 'net/https' # モジュールの読み込み class GoogleBookClient # クラスとして定義 include Singleton # デザインパターンの一種。GoogleBookClient.instance.search(keyword)のように外部から呼び出す def initialize @uri = URI.parse 'https://www.googleapis.com/books/v1/volumes' # URIにparseする @http = Net::HTTP.new @uri.host, @uri.port # httpインスタンスを生成 @http.use_ssl = true # httpsで通信を行うようにする。指定しないとエラーする場合がある end def search(keyword) # 検索を行って配列を返すメソッド create_request(keyword) @res['items'].map do |item| info = item['volumeInfo'] { id: item['id'], title: info['title'], price: item['saleInfo']['listPrice'].nil? ? ' - ' : item['saleInfo']['listPrice']['amount'].floor.to_s, authors: info['authors'], publisher: info['publisher'], published_date: info['publishedDate'], description: info['description'], image_path: info['imageLinks']['smallThumbnail'] } end end private def create_request(keyword) # httpリクエストを投げてレスポンスを返り値とするメソッド req = Net::HTTP::Get.new @uri.path + "?q=#{keyword}" # getリクエストを生成 _res = @http.request req # httpリクエストを投げる @res = JSON.parse(_res.body) # レスポンスをJSON形式にparseする end end
Railsの場合、このファイルをディレクトリに置いて、config/application.rbに
module MyApp class Application < Rails::Application config.load_defaults 6.0 config.paths.add 'lib', eager_load: true # <= を追加 end end
上記のようにlibディレクトリのファイルをロードするように設定すれば、
コンソールで試せるようになるかと思います。
早速コンソールで試してみます。
$ cd ~/任意のRailsアプリのディレクトリ $ bundle exec rails c > GoogleBookClient.instance.search('Rails') => [{:id=>"jqKkDwAAQBAJ", :title=>"独習Ruby on Rails", :price=>"3960", :authors=>["小餅 良介"], :publisher=>"翔泳社", :published_date=>"2019-06-19", :description=> "現場で使える Ruby on Rails 5.2の基本 プログラミング言語RubyによるWebアプ リケーション開発の フレームワーク「Ruby on Rails」が、『独習』シリーズに登場! Rails入門者だけでなく、プログラミング初心者も、 ・解説→コード→演習 という形 式で、自力で使えるようになるまで、 基礎から一通り学べる本格入門書。 Railsを実 際に教えている著者による、 オブジェクト指向から、MVCモデルまで、 しっかり、じ っくり学べる一冊です。 ~~~目次~~~ Chapter 1 Rails概要 Chapter 2 オブジェクト 指向とRubyの基本 Chapter 3 Railsの起動と簡単なアプリケーションの構築 Chapter 4 Rails全体の仕組み Chapter 5 Active Record Chapter 6 モデルに実装すべき役割 Chapter 7 モデルを豊かにする仕組み Chapter 8 ルーターとコントローラー Chapter 9 コントローラーによるデータの扱い Chapter 10 Action View Chapter 11 ビュー を支える機能 Chapter 12 その他のコンポーネント Chapter 13 Active SupportとRai lsのテスト ※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出 版当時のものです。 ※印刷出版再現のため電子書籍としては不要な情報を含んでいる 場合があります。 ※印刷出版とは異なる表記・表現の場合があります。予めご了承く ださい。 ※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお 買い求めください。 (翔泳社)", :image_path=> "http://books.google.com/books/content?id=jqKkDwAAQBAJ&printsec=frontcover &img=1&zoom=5&edge=curl&source=gbs_api"}, ...
上記のような出力結果が得られると思います。
あとは返ってきた値をviewで使用すればOKです。