11
20

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 5 years have passed since last update.

GoogleBooksAPIでISBNコードを使って書籍を検索するときのワナ

Posted at

##はじめに

GoogleBooksAPIを使うと様々な条件で書籍の検索ができます。
ややこしい登録や認証が不要なのでとても使いやすいです。
ですがISBNコードで書籍を検索するときはちょっと注意が必要という話です。

##忙しい人のために

ISBNで検索するときは、

https://www.googleapis.com/books/v1/volumes?q=search+isbn=[ISBN10]

じゃなくて

https://www.googleapis.com/books/v1/volumes?q=isbn:[ISBN10]

で検索しよう。

##説明

GoogleBooksAPIによると検索APIの基本形は以下のようになっています。

https://www.googleapis.com/books/v1/volumes?q=search+terms

この"terms"の部分に検索パラメータを当てはめればOKということらしいです。
例えばISBN10で検索したいときは次のURLになるわけです。

ですがこのURLでリクエストを送ると書籍が4つも返ってきます(実際の結果は上記URL参照)。

Title ISBN10
C++ FAQ 489471194X
雲の王 4087453405
エキスパート Cプログラミング 4756116396
C言語ポインタ完全制覇 4774111422

ISBNでちゃんと検索できているのは最初の一冊だけです。
「雲の王」というのは普通の小説なので関連性もありません。

なぜ固有IDであるはずのISBNで複数の本が引っかかるのかというと、どうやらレスポンスの"PreviewLink"という項目の値に検索対象のISBNと同じ文字列が入っているからのようです。

"previewLink":http://books.google.co.jp/books?id=QRkPswEACAAJ&dq=search+isbn%3D489471194X&hl=&cd=2&source=gbs_api

結局のところISBNで正しく検索するためのURLは次の形式になります。

https://www.googleapis.com/books/v1/volumes?q=isbn:[ISBN10]

今度はちゃんとISBNで検索できます。

  • ISBN10じゃなくてISBN13を使ってももちろんOKです。
  • 他の検索パラメータでも同じ事象があるかもしれませんが、試していません。
11
20
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
11
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?