Google Books APIの使い方~その２~

[前回](https://qiita.com/stella0270/items/0b77d09391c3111e88e5)からの続きです。

今回は「Google Books APIの呼び出し方」についてです。

本記事はGoogle Books APIの[開発者向けサイト](https://developers.google.com/books)を翻訳して簡潔にまとめたものです。

#Google Books APIの呼び出し方
呼び出し方は以下の２つがあります。
1. RESTを直接使用する
2. JavaScriptからRESTを使用する

## 1. RESTを直接使用する
URIは以下の形式です。
https://www.googleapis.com/books/v1/{collectionName}/resourceID?parameters

resourceIDはボリュームまたはブックシェルフリソースの識別子です。
parametersはクエリに適用する任意のパラメーターです。

詳細は[API Reference](https://developers.google.com/books/docs/v1/reference)にありますが、以下にその内容を記載します。
・REST URIの先頭には「 https://www.googleapis.com/books/v1 」をつけてください。
・mylibraryの操作は認証されているユーザのプライベートデータのみに適用されます。
・<font color="MediumVioletRed">userId</font>、<font color="MediumVioletRed">shelf</font>、<font color="MediumVioletRed">volumeId</font>に取得したいUserId、BookshelfId、VolumeIdをセットします。

***Bookshelf***

|メソッド|REST URI|説明|
|:--|:--|:--|
|list|GET  /users/<font color="MediumVioletRed">userId</font>/bookshelves|指定したユーザーのパブリックBookshelfリソースのリストを取得|
|get|GET  /users/<font color="MediumVioletRed">userId</font>/bookshelves/<font color="MediumVioletRed">shelf</font>|指定されたユーザーの特定のBookshelfリソースを取得|

***Volume***

|メソッド|REST URI|説明|
|:--|:--|:--|
|get|GET  /volumes/<font color="MediumVioletRed">volumeId</font>|IDに基づいてボリュームリソースを取得|
|list|GET  /volumes?q={search terms}|ボリュームの検索|

***Bookshelves.volumes***

|メソッド|REST URI|説明|
|:--|:--|:--|
|list|GET  /users/<font color="MediumVioletRed">userId</font>/bookshelves/<font color="MediumVioletRed">shelf</font>/volumes|指定されたユーザーの特定の本棚にあるボリュームを取得|

***Mylibrary.bookshelves***

|メソッド|REST URI|説明|
|:--|:--|:--|
|addVolume|POST  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>/addVolume|本棚にボリュームを追加|
|clearVolumes|POST  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>/clearVolumes|本棚からすべてのボリュームをクリア|
|get|GET  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>|認証されたユーザーに属する特定の本棚のメタデータを取得|
|list|GET  /mylibrary/bookshelves|認証されたユーザーの本棚のリストを取得|
|moveVolume|POST  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>/moveVolume|本棚内のボリュームを移動|
|removeVolume|POST  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>/removeVolume|本棚からボリュームを削除|

***Mylibrary.bookshelves.volumes***

|メソッド|REST URI|説明|
|:--|:--|:--|
|list|GET  /mylibrary/bookshelves/<font color="MediumVioletRed">shelf</font>/volumes|本棚のボリュームのボリューム情報を取得|

**検索例**
「Python」に関する本を検索したい場合は以下のように記述します。
実行すると結果がJSONで取得できていることが確認できます。

>GET https://www.googleapis.com/books/v1/volumes?q=Python

VolumeIdを指定して取得する場合は以下のように記述します。
>GET https://www.googleapis.com/books/v1/volumes/s1gVAAAAYAAJ

##2. JavaScriptからRESTを使用する
JavaScriptからRESTを使用し、クエリパラメータとコールバック関数を使用して、APIを呼び出すことができます。

access_tokenパラメーターを使用してOAuth 2.0トークンを渡すことにより、認証されたメソッドを呼び出すことができます。 

```HTML:例）ハリーポッターの検索
<html>
  <head>
    <title>Books API Example</title>
  </head>
  <body>
    <div id="content"></div>
    <script>
      function handleResponse(response) {
      for (var i = 0; i < response.items.length; i++) {
        var item = response.items[i];
        // in production code, item.text should have the HTML entities escaped.
        document.getElementById("content").innerHTML += "<br>" + item.volumeInfo.title;
      }
    }
    </script>
    <script src="https://www.googleapis.com/books/v1/volumes?q=harry+potter&callback=handleResponse"></script>
  </body>
</html>
```

#最後に
以上、「Google Books APIの呼び出し方」でした。

次回は「[Googleブックスで使用されるID](https://qiita.com/stella0270/items/5727cd7726aa19ae850b)」です。