Rubyで国立国会図書館APIに問い合わせ
- 国会図書館API(OpenSearch)にRuby問い合わせる。
http://iss.ndl.go.jp/information/api/ - ISBNに紐づく書籍情報を取得する。
GET http://iss.ndl.go.jp/api/opensearch?isbn=9784774163666 - REXML::Documentで返却されます。(普通はどうやって返すんだろ?)
- 今回はISBNのみですが、getのパラメータを変えればいろいろな情報で問い合わせできます。
open_search_client.rb
require "faraday"
require 'rexml/document'
# open_search_client.rb
class OpenSearchClient
URL_HEAD = 'http://iss.ndl.go.jp'
def get_book_info_by_isbn(isbn)
response = get('/api/opensearch', {:isbn => isbn})
REXML::Document.new(response.body)
end
private
def get(path, pram)
con = Faraday.new(:url => URL_HEAD) do |f|
f.request :url_encoded
f.response :logger
f.adapter Faraday.default_adapter
end
con.get path, pram # GET http://iss.ndl.go.jp/api/opensearch?isbn=9784774163666
end
end
main.rb
o = OpenSearchClient.new
res = o.get_book_info_by_isbn('978-4774163666')
puts res.elements['//rss/channel/item/title'].text #=> GitHub実践入門 : Pull Requestによる開発の変革