使用 API

目錄

引言

本文件的適用對象為想編寫能與 Books API 互動的應用程式的開發人員。Google 圖書的宗旨是將全世界的書籍內容數位化,讓網路使用者更容易找到你的書籍。Books API 可協助搜尋和存取內容,以及建立及查看個人化內容。

如果您對於 Google 圖書概念不太熟悉,請先閱讀入門指南,再開始撰寫程式碼。

授權要求並識別您的應用程式

每次您向 Books API 傳送的要求,都必須向 Google 指明您的應用程式。找出應用程式的方法有兩種:使用 OAuth 2.0 權杖 (同時授權要求) 和/或使用應用程式的 API 金鑰。下列內容說明如何決定使用的方法:

  • 如果要求需要授權 (例如要求個人私人資料),應用程式就必須提供 OAuth 2.0 權杖和要求。應用程式也可能提供 API 金鑰,但並非必要。
  • 如果要求不需要經過授權 (例如要求公開資料),則應用程式必須為此要求提供 OAuth 2.0 憑證及/或 API 金鑰,視何種方式對您來說比較方便而定。

關於授權通訊協定

您的應用程式必須使用 OAuth 2.0 對要求進行授權,系統不支援其他授權通訊協定。如果您的應用程式採用使用 Google 帳戶登入功能,系統會為您處理部分授權事項。

使用 OAuth 2.0 對要求進行授權

向不公開 API 發出的使用者資料要求必須由已驗證的使用者授權。

OAuth 2.0 授權程序 (或「流程」) 的細節會根據您編寫的應用程式類型而有所不同。下列一般程序適用於所有應用程式類型:

  1. 建立應用程式後,請透過 Google API 控制台註冊應用程式。接著 Google 會向您提供稍後需要的資訊,例如用戶端 ID 和用戶端密碼。
  2. 在 Google API 控制台中啟用 Books API。(如果 API 控制台裡沒有列出該 API,則可略過這個步驟)。
  3. 當應用程式需要存取使用者資料時,會向 Google 要求特定的存取範圍
  4. Google 會向使用者顯示同意畫面,請對方授權您的應用程式要求部分資料。
  5. 如果使用者同意,Google 即會授予短期存取憑證給您的應用程式。
  6. 您的應用程式向使用者要求資料,並且在要求中附上存取憑證。
  7. 如果 Google 判定您的要求與憑證有效,便會傳回您要求的資料。

部分流程包含額外步驟,例如使用「更新憑證」來取得新的存取憑證。如要進一步瞭解各類應用程式的流程,請參閱 Google 的 OAuth 2.0 說明文件

以下是 Books API 的 OAuth 2.0 範圍資訊:

https://www.googleapis.com/auth/books

如要透過 OAuth 2.0 要求存取權,您的應用程式需要範圍資訊,以及 Google 在您註冊應用程式時提供的資訊 (例如用戶端 ID 和用戶端密碼)。

提示:Google API 用戶端程式庫可以為您處理部分授權程序,且適用於多種程式設計語言;詳情請參閱程式庫和範例頁面

取得及使用 API 金鑰

向 Books API 公開資料的要求時,必須隨附 ID,可以是 API 金鑰存取權杖

要取得 API 金鑰:

  1. 在 API 控制台中開啟「憑證」頁面
  2. 這個 API 支援兩種憑證。 建立要用於專案的憑證:
    • OAuth 2.0:每當應用程式要求取得私人使用者資料時,都必須隨著要求傳送 OAuth 2.0 權杖。您的應用程式會先傳送用戶端 ID,並可能傳送用戶端密鑰來取得權杖。您可以為網路應用程式、服務帳戶或已安裝的應用程式產生 OAuth 2.0 憑證。

      詳情請參閱 OAuth 2.0 說明文件

    • API 金鑰: 如果要求未提供 OAuth 2.0 權杖,則必須傳送 API 金鑰。該金鑰可用來識別專案,並提供 API 存取權、配額和報表。

      API 支援數種類型的 API 金鑰限制。如果所需的 API 金鑰不存在,則在主控台中依序按一下「建立憑證」>「API 金鑰」,建立 API 金鑰。您可以先在實際工作環境中使用金鑰來限制金鑰,然後按一下「限制金鑰」,然後選取其中一個「限制」

為確保您 API 金鑰的安全,請遵循安全使用 API 金鑰的最佳做法

取得 API 金鑰後,您的應用程式可將查詢參數 key=yourAPIKey 附加至所有要求網址。

API 金鑰可以安全地嵌入網址中,不需任何編碼。

Google 圖書 ID

您必須使用特定 API 方法呼叫來指定 ID 欄位。Google 圖書中使用的 ID 有三種:

  • 磁碟區 ID - Google 圖書已知且每個書籍都有的專屬字串。磁碟區 ID 的範例為 _LettPDhwR0C。您可以使用 API 取得磁碟區資源的要求,取得磁碟區 ID;您可以在其 id 欄位中找到磁碟區 ID。
  • 圖書 ID - 提供給使用者媒體庫中書架的數值。Google 為每個使用者提供下列 ID 預先定義的預先定義書架:
    • 我的收藏:0 個
    • 購買日期:1
    • 易讀:2
    • 立即閱讀:3
    • 已讀:4
    • 已審查:5
    • 最近檢視過的:6
    • 我的電子書:7
    • 為你推薦的書籍:8 如果我們沒有向使用者提供推薦內容,代表這個書架不存在。
    自訂書架 ID 大於 1000。每位使用者的書架 ID 不得重複,例如兩個使用者都有一個 ID 必須參照不同的書架。您可以使用 API 取得傳回書架資源的要求來取得書架 ID,您可以在這個 id 欄位中找到這個書架 ID。
  • 使用者 ID - 指派給每位使用者的專屬數字值。這些值不一定要與其他 Google 服務中的 ID 值相同。目前,如要擷取 User-ID,唯一的方法就是使用已驗證要求擷取的書架資源中的自我連結。使用者也可以在「圖書」網站取得自己的使用者 ID。使用者無法透過 API 或書籍網站取得其他使用者的使用者 ID,另一個使用者必須透過電子郵件明確共用該資訊。

Google 圖書網站上的 ID

透過 Books API 使用的 ID 與您在 Google 圖書網站上使用的 ID 相同。

  • 磁碟區 ID

    查看網站上的特定磁碟區時,您可以在 id 網址參數中找到磁碟區 ID。範例如下:

    https://books.google.com/ebooks?id=buc0AAAAMAAJ&dq=holmes&as_brr=4&source=webstore_bookcard

  • 書架 ID

    查看網站上的特定書架時,您可以在 as_coll 網址參數中找到這個書架 ID。範例如下:

    https://books.google.com/books?hl=en&as_coll=0&num=10&uid=11122233344455566778&source=gbs_slider_cls_metadata_0_mylibrary

  • 使用者 ID

    在網站上查看程式庫時,您可以在 uid 網址參數中找到使用者 ID。範例如下:

    https://books.google.com/books?uid=11122233344455566778&source=gbs_lp_bookshelf_list

設定使用者位置

Google 圖書會尊重與使用者所在位置相關的版權、合約及其他法律限制。因此,部分使用者可能無法存取特定國家/地區的書籍內容。舉例來說,某些書籍可「開放試閱」;在美國,我們僅對其他國家/地區的使用者隱藏這類預覽連結。因此,API 結果取決於您的伺服器或用戶端應用程式的 IP 位址,

使用磁碟區

執行搜尋

將 HTTP GET 要求傳送至下列 URI 即可執行磁碟區搜尋:

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

這個要求只有一個必要參數:

  • q - 搜尋含有這個文字字串的磁碟區。您可以在搜尋字詞中指定特殊關鍵字,以便在特定欄位中搜尋,例如:
    • intitle: 傳回在標題中找到這個關鍵字後的文字。
    • inauthor: 傳回在作者中找到此關鍵字後找到的結果。
    • inpublisher:傳回發布商在這個關鍵字中找到的文字後傳回的結果。
    • subject: 傳回在關鍵字類別清單所列的關鍵字後方的結果。
    • isbn: 傳回在這個關鍵字後方的文字是 ISBN 號碼的結果。
    • lccn: 會傳回關鍵字後方的文字是美國國會圖書館控制號碼。
    • oclc: 會傳回關鍵字後方的文字是 Online Computer Library Center 號碼的結果。

要求

以下是搜尋 Daniel Keyes' "Flowers for Algernon" 的範例:

GET https://www.googleapis.com/books/v1/volumes?q=flowers+inauthor:keyes&key=yourAPIKey

注意:執行搜尋不需要驗證,因此不需要向 GET HTTP 要求提供 Authorization HTTP 標頭。不過,如果是透過驗證進行呼叫,每個磁碟區都會包含使用者相關資訊,例如購買狀態。

回應

如果要求成功,伺服器會以 200 OK HTTP 狀態碼回應,且磁碟區結果如下:

200 OK

{
 "kind": "books#volumes",
 "items": [
  {
   "kind": "books#volume",
   "id": "_ojXNuzgHRcC",
   "etag": "OTD2tB19qn4",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/_ojXNuzgHRcC",
   "volumeInfo": {
    "title": "Flowers",
    "authors": [
     "Vijaya Khisty Bodach"
    ],
   ...
  },
  {
   "kind": "books#volume",
   "id": "RJxWIQOvoZUC",
   "etag": "NsxMT6kCCVs",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/RJxWIQOvoZUC",
   "volumeInfo": {
    "title": "Flowers",
    "authors": [
     "Gail Saunders-Smith"
    ],
    ...
  },
  {
   "kind": "books#volume",
   "id": "zaRoX10_UsMC",
   "etag": "pm1sLMgKfMA",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/zaRoX10_UsMC",
   "volumeInfo": {
    "title": "Flowers",
    "authors": [
     "Paul McEvoy"
    ],
    ...
  },
  "totalItems": 3
}

選用查詢參數

除了標準查詢參數外,您也可以在執行磁碟區搜尋時使用下列查詢參數。

下載格式

您可以使用 download 參數,將 的值設為 epub,將傳回的結果限制在可下載的下載格式為 epub 的磁碟區。

以下範例提供可下載 epub 的書籍:

GET https://www.googleapis.com/books/v1/volumes?q=pride+prejudice&download=epub&key=yourAPIKey
篩選

您可以使用 filter 參數將其值設為下列其中一個值,進一步限制傳回的結果:

  • partial - 傳回至少部分文字為可預覽的結果。
  • full - 傳回所有文字均可供查看的結果。
  • free-ebooks - 只會傳回免費的 Google 電子書搜尋結果。
  • paid-ebooks - 只會傳回包含價格的 Google 電子書搜尋結果。
  • ebooks - 只傳回付費或免費的 Google 電子書搜尋結果。例如提供有限試閱、無法銷售 (或電子書) 的出版商內容。

以下範例說明如何將搜尋結果限制為免費電子書:

GET https://www.googleapis.com/books/v1/volumes?q=flowers&filter=free-ebooks&key=yourAPIKey
分頁

您可以在要求的參數中指定兩個值,藉此將磁碟區清單分頁:

  • startIndex - 要在集合中的開始位置。第一個項目的索引為 0。
  • maxResults - 要傳回的結果數量上限。預設值為 10,最大值為 40。

您可以使用 printType 參數,將傳回的結果限制為以下其中一種列印或出版品類型,方法是將其設為下列其中一個值:

  • all - 不受列印類型 (預設) 限制。
  • books - 僅傳回書籍搜尋結果。
  • magazines:傳回雜誌的搜尋結果。

以下範例顯示的搜尋結果僅限於雜誌:

GET https://www.googleapis.com/books/v1/volumes?q=time&printType=magazines&key=yourAPIKey
Projection

您可以使用 projection 參數搭配下列其中一個值,指定要傳回的一組「音量」欄位組合:

  • full - 傳回所有音量欄位。
  • lite - 僅傳回特定欄位。請參閱磁碟區參考資料中標有雙星號的欄位說明,瞭解納入了哪些欄位。

以下範例傳回了數量有限的搜尋結果:

GET https://www.googleapis.com/books/v1/volumes?q=flowers&projection=lite&key=yourAPIKey
排序

根據預設,磁碟區搜尋要求會傳回 maxResults 結果,其中 maxResults 是分頁中使用的參數 (如上所述,是根據搜尋字詞排序)。

如要變更排序方式,請將 orderBy 參數設為下列其中一個值:

  • relevance - 按照搜尋字詞的關聯性傳回結果 (這是預設值)。
  • newest - 傳回從最近到最近發布的結果。

以下範例會依發布日期 (由新到舊) 列出結果:

GET https://www.googleapis.com/books/v1/volumes?q=flowers&orderBy=newest&key=yourAPIKey

擷取特定磁碟區

您可以將 HTTP GET 要求傳送至磁碟區資源 URI,藉此擷取特定磁碟區的資訊:

https://www.googleapis.com/books/v1/volumes/volumeId

volumeId 路徑參數替換為要擷取的磁碟區 ID。如要進一步瞭解磁碟區 ID,請參閱 Google 圖書 ID 一節。

要求

以下是取得單一磁碟區的 GET 要求範例:

GET https://www.googleapis.com/books/v1/volumes/zyTCAlFPjgYC?key=yourAPIKey

注意:擷取磁碟區資訊不需要進行驗證,因此您不必向 GET 要求提供 Authorization HTTP 標頭。不過,如果是透過驗證進行呼叫,則磁碟區會包含使用者相關資訊,例如購買狀態。

回應

如果要求成功,伺服器會以 200 OK HTTP 狀態碼和要求的音量資源回應:

200 OK

{
 "kind": "books#volume",
 "id": "zyTCAlFPjgYC",
 "etag": "f0zKg75Mx/I",
 "selfLink": "https://www.googleapis.com/books/v1/volumes/zyTCAlFPjgYC",
 "volumeInfo": {
  "title": "The Google story",
  "authors": [
   "David A. Vise",
   "Mark Malseed"
  ],
  "publisher": "Random House Digital, Inc.",
  "publishedDate": "2005-11-15",
  "description": "\"Here is the story behind one of the most remarkable Internet
  successes of our time. Based on scrupulous research and extraordinary access
  to Google, ...",
  "industryIdentifiers": [
   {
    "type": "ISBN_10",
    "identifier": "055380457X"
   },
   {
    "type": "ISBN_13",
    "identifier": "9780553804577"
   }
  ],
  "pageCount": 207,
  "dimensions": {
   "height": "24.00 cm",
   "width": "16.03 cm",
   "thickness": "2.74 cm"
  },
  "printType": "BOOK",
  "mainCategory": "Business & Economics / Entrepreneurship",
  "categories": [
   "Browsers (Computer programs)",
   ...
  ],
  "averageRating": 3.5,
  "ratingsCount": 136,
  "contentVersion": "1.1.0.0.preview.2",
  "imageLinks": {
   "smallThumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
   "thumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
   "small": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=2&edge=curl&source=gbs_api",
   "medium": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=3&edge=curl&source=gbs_api",
   "large": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=4&edge=curl&source=gbs_api",
   "extraLarge": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=6&edge=curl&source=gbs_api"
  },
  "language": "en",
  "infoLink": "https://books.google.com/books?id=zyTCAlFPjgYC&ie=ISO-8859-1&source=gbs_api",
  "canonicalVolumeLink": "https://books.google.com/books/about/The_Google_story.html?id=zyTCAlFPjgYC"
 },
 "saleInfo": {
  "country": "US",
  "saleability": "FOR_SALE",
  "isEbook": true,
  "listPrice": {
   "amount": 11.99,
   "currencyCode": "USD"
  },
  "retailPrice": {
   "amount": 11.99,
   "currencyCode": "USD"
  },
  "buyLink": "https://books.google.com/books?id=zyTCAlFPjgYC&ie=ISO-8859-1&buy=&source=gbs_api"
 },
 "accessInfo": {
  "country": "US",
  "viewability": "PARTIAL",
  "embeddable": true,
  "publicDomain": false,
  "textToSpeechPermission": "ALLOWED_FOR_ACCESSIBILITY",
  "epub": {
   "isAvailable": true,
   "acsTokenLink": "https://books.google.com/books/download/The_Google_story-sample-epub.acsm?id=zyTCAlFPjgYC&format=epub&output=acs4_fulfillment_token&dl_type=sample&source=gbs_api"
  },
  "pdf": {
   "isAvailable": false
  },
  "accessViewStatus": "SAMPLE"
 }
}
存取權資訊

accessInfo 區段特別用於決定電子書可用的功能。epub 是資料流格式文字電子書,epub 區段包含 isAvailable 屬性,以指出這類電子書是否可用。如果書籍有試閱,或者因為使用者購買 (或因為其是使用者所在地區的公共網域) 而無法閱讀書籍,書籍就會顯示下載連結。Google 圖書的 pdf 代表電子書的掃描版網頁,其中含有類似的詳細資料,例如是否上架和下載連結。Google 建議使用電子書閱讀器和智慧型手機適用的 epub 檔案,因為在這些裝置上,掃描頁面可能難以閱讀。 如果沒有 accessInfo 區段,音量就無法以 Google 電子書的形式呈現。

選用查詢參數

除了標準查詢參數外,您還可以在擷取特定磁碟區時使用下列查詢參數。

Projection

您可以使用 projection 參數搭配下列其中一個值,指定要傳回的一組「音量」欄位組合:

  • full - 傳回所有音量欄位。
  • lite - 僅傳回特定欄位。請參閱磁碟區參考資料中標有雙星號的欄位說明,瞭解納入了哪些欄位。

下列範例會傳回單一磁碟區的有限量資訊:

GET https://www.googleapis.com/books/v1/volumes/zyTCAlFPjgYC?projection=lite&key=yourAPIKey

使用書架

擷取使用者的公開書架

如要擷取使用者公共書架的清單,請按照下列格式將 HTTP GET 要求傳送至 URI:

https://www.googleapis.com/books/v1/users/userId/bookshelves

userId 路徑參數替換成您想擷取其書架的使用者 ID。如要進一步瞭解 User-ID,請參閱 Google 圖書 ID 一節。

要求

範例如下:

GET https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves&key=yourAPIKey

由於使用者不必經過驗證,無法擷取公開書架上的資訊,因此您不必提供 Authorization HTTP 標頭和 GET 要求。

回應

如果要求成功,伺服器會傳回 200 OK HTTP 狀態碼和書架清單:

200 OK

{
 "kind": "books#bookshelves",
 "items": [
  {
   ...
  },
  {
   "kind": "books#bookshelf",
   "id": 3,
   "selfLink": "https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/3",
   "title": "Reading now",
   "description": "",
   "access": "PUBLIC",
   "updated": "2011-02-02T20:34:20.146Z",
   "created": "2011-02-02T20:34:20.146Z",
   "volumeCount": 2,
   "volumesLastUpdated": "2011-02-02T20:34:20.110Z"
  },
  ...
 ]
}

選用查詢參數

擷取使用者的公開書架時,您可以使用標準查詢參數

擷取特定公開書架

只要使用以下格式的 URI 傳送 HTTP GET 要求,即可擷取特定公開書架:

https://www.googleapis.com/books/v1/users/userId/bookshelves/shelf

userIdshelf 路徑參數替換成您要擷取的使用者和書架的 ID。詳情請參閱 Google 圖書 ID 一節。

要求

範例如下:

GET https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/3?key=yourAPIKey

由於使用者不必經過驗證,無法擷取公開書架上的資訊,因此您不必提供 Authorization HTTP 標頭和 GET 要求。

回應

如果要求成功,伺服器會以 200 OK HTTP 狀態碼和 書架資源回應:

200 OK

{
  "kind": "books#bookshelf",
  "id": 3,
  "selfLink": "https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/3",
  "title": "Reading now",
  "description": "",
  "access": "PUBLIC",
  "updated": "2011-02-02T20:34:20.146Z",
  "created": "2011-02-02T20:34:20.146Z",
  "volumeCount": 2,
  "volumesLastUpdated": "2011-02-02T20:34:20.110Z"
}

選用查詢參數

擷取特定公開書架時,您可以使用標準查詢參數

擷取公開書架上的磁碟區清單

您可以傳送 HTTP 要求,並使用以下格式的 URI GET 來擷取使用者公開書架中的磁碟區清單:

https://www.googleapis.com/books/v1/user/userId/bookshelves/shelf/volumes

要求

範例如下:

GET https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/3/volumes?key=yourAPIKey

userIdshelf 路徑參數替換成您要擷取的使用者和書架的 ID。詳情請參閱 Google 圖書 ID 一節。

由於使用者不必經過驗證,無法擷取公開書架上的資訊,因此您不必提供 Authorization HTTP 標頭和 GET 要求。

回應

如果要求成功,伺服器會回應 200 OK HTTP 狀態碼,以及使用者書架的清單:

200 OK

{
 "kind": "books#volumes",
 "items": [
  {
   "kind": "books#volume",
   "id": "AZ5J6B1-4BoC",
   "etag": "kIzQA7IUObk",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/AZ5J6B1-4BoC",
   "volumeInfo": {
    "title": "The Girl Who Kicked the Hornet's Nest",
    "authors": [
     "Stieg Larsson"
    ],
    "publisher": "Knopf",
    "publishedDate": "2010-05-25",
    ...
  },
  {
   "kind": "books#volume",
   "id": "UvK1Slvkz3MC",
   "etag": "otKmdbRgdFQ",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/UvK1Slvkz3MC",
   "volumeInfo": {
    "title": "The Girl who Played with Fire",
    "authors": [
     "Stieg Larsson"
    ],
    "publisher": "Knopf",
    "publishedDate": "2009-07-28",
    ...
  },
  {
   "kind": "books#volume",
   "id": "OBM3AAAAIAAJ",
   "etag": "xb47kTr8HsQ",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/OBM3AAAAIAAJ",
   "volumeInfo": {
    "title": "The Sign of Four",
    "authors": [
     "Sir Arthur Conan Doyle"
    ],
    "publishedDate": "1890",
    ...
  }
 ],
 "totalItems": 3
}

選用查詢參數

除了標準查詢參數之外,擷取公開書架上的磁碟區清單時,您也可以使用下列查詢參數。

分頁

您可以在要求的參數中指定兩個值,藉此將磁碟區清單分頁:

  • startIndex - 要在集合中的開始位置。第一個項目的索引為 0。
  • maxResults - 要傳回的結果數量上限。預設值為 10,最大值為 40。

在「我的圖書館」中使用書架。

所有「我的媒體庫」要求都會套用至已通過驗證的使用者資料。

擷取書架清單

您可以使用下列格式傳送 HTTP GET 要求至 URI,擷取所有已驗證使用者的書籍清單:

https://www.googleapis.com/books/v1/mylibrary/bookshelves

要求

範例如下:

GET https://www.googleapis.com/books/v1/mylibrary/bookshelves?key=yourAPIKey
Authorization: /* auth token here */

注意:使用者必須完成身分驗證,才能擷取「我的圖書館」清單。因此,您必須在 GET 要求中提供 Authorization HTTP 標頭。

回應

如果要求成功,伺服器會回應 200 OK HTTP 狀態碼,以及目前已驗證使用者的所有書架清單:

200 OK

{
 "kind": "books#bookshelves",
 "items": [
  {
   "kind": "books#bookshelf",
   "id": 0,
   "selfLink": "https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/0",
   "title": "Favorites",
   "access": "PRIVATE",
   "updated": "2011-04-22T04:03:15.416Z",
   "created": "2011-04-22T04:03:15.416Z",
   "volumeCount": 0,
   "volumesLastUpdated": "2011-04-22T04:03:17.000Z"
  },
  {
   "kind": "books#bookshelf",
   "id": 3,
   "selfLink": "https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves/3",
   "title": "Reading now",
   "access": "PUBLIC",
   "updated": "2010-11-11T19:44:22.377Z",
   "created": "2010-11-11T19:44:22.377Z",
   "volumeCount": 1,
   "volumesLastUpdated": "2010-11-11T19:44:22.341Z"
  }
 ]
}

選用查詢參數

擷取已驗證使用者的書架時,您可以使用標準查詢參數

擷取書架上的磁碟區清單

以下列格式向 URI 傳送 HTTP GET 要求,藉此在已驗證使用者的書架上擷取磁碟區清單:

https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf/volumes

shelf 路徑參數替換為書架的 ID。如要進一步瞭解書架 ID,請參閱 Google 圖書 ID 一節。

要求

範例如下:

GET https://www.googleapis.com/books/v1/mylibrary/bookshelves/7/volumes?key=yourAPIKey
Authorization: /* auth token here */

注意:使用者必須完成身分驗證,才能擷取「我的程式庫」磁碟區清單。因此,您必須在 GET 要求中提供 Authorization HTTP 標頭。

回應

如果要求成功,伺服器會回應 200 OK HTTP 狀態碼和書架磁碟區清單:

200 OK

{
 "kind": "books#volumes",
 "items": [
  {
   "kind": "books#volume",
   "id": "AZ5J6B1-4BoC",
   "etag": "kIzQA7IUObk",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/AZ5J6B1-4BoC",
   "volumeInfo": {
    "title": "The Girl Who Kicked the Hornet's Nest",
    "authors": [
     "Stieg Larsson"
    ],
    "publisher": "Knopf",
    "publishedDate": "2010-05-25",
    ...
  },
  {
   "kind": "books#volume",
   "id": "UvK1Slvkz3MC",
   "etag": "otKmdbRgdFQ",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/UvK1Slvkz3MC",
   "volumeInfo": {
    "title": "The Girl who Played with Fire",
    "authors": [
     "Stieg Larsson"
    ],
    "publisher": "Knopf",
    "publishedDate": "2009-07-28",
    ...
  },
  {
   "kind": "books#volume",
   "id": "OBM3AAAAIAAJ",
   "etag": "xb47kTr8HsQ",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/OBM3AAAAIAAJ",
   "volumeInfo": {
    "title": "The Sign of Four",
    "authors": [
     "Sir Arthur Conan Doyle"
    ],
    "publishedDate": "1890",
    ...
  }
 ],
 "totalItems": 3
}

選用查詢參數

除了標準查詢參數之外,您還可以透過已驗證的使用者書籍簿清單,使用下列查詢參數進行擷取。

分頁

您可以在要求的參數中指定兩個值,藉此將磁碟區清單分頁:

  • startIndex - 要在集合中的開始位置。第一個項目的索引為 0。
  • maxResults - 要傳回的結果數量上限。預設值為 10。

將磁碟區新增至我的書架

如要將已驗證磁碟區新增至磁碟區,請將 HTTP 的 POST 要求傳送至 URI,格式如下:

https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf/addVolume

shelf 路徑參數替換為書架的 ID。如要進一步瞭解書架 ID,請參閱 Google 圖書 ID 一節。

要求含有單一必要查詢參數:

  • volumeId - 磁碟區的 ID。如要進一步瞭解磁碟區 ID,請參閱 Google 圖書 ID 一節。

要求

以下範例說明如何將「Flowers for Algernon」

POST https://www.googleapis.com/books/v1/mylibrary/bookshelves/0/addVolume?volumeId=NRWlitmahXkC&key=yourAPIKey
Authorization: /* auth token here */
Content-Type: application/json
Content-Length: CONTENT_LENGTH

注意:使用者必須先完成驗證,才能修改存放區,因此必須使用 POST 要求提供 Authorization HTTP 標頭。不過,這個 POST 不需要任何資料。

回應

如果要求成功,伺服器會以 204 No Content HTTP 狀態碼回應。

選用查詢參數

在已驗證的任一書架上新增磁碟區時,您可以使用標準查詢參數

從我的書架中移除音量

如要從已驗證的使用者書架中移除磁碟區,請按照下列格式將 URI 傳送至 POST

https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf/removeVolume

shelf 路徑參數替換為書架的 ID。如要進一步瞭解書架 ID,請參閱 Google 圖書 ID 一節。

要求含有單一必要查詢參數:

  • volumeId - 磁碟區的 ID。 如要進一步瞭解磁碟區 ID,請參閱 Google 圖書 ID 一節。

要求

以下範例說明如何從「收藏」移除「Algernon」的「Flows」。

POST https://www.googleapis.com/books/v1/mylibrary/bookshelves/0/removeVolume?volumeId=NRWlitmahXkC&key=yourAPIKey
Authorization: /* auth token here */
Content-Type: application/json
Content-Length: CONTENT_LENGTH

注意:使用者必須先完成驗證,才能修改存放區,因此必須使用 POST 要求提供 Authorization HTTP 標頭。不過,這個 POST 不需要任何資料。

回應

如果要求成功,伺服器會以 204 No Content 狀態碼回應。

選用查詢參數

從已驗證使用者的書籍書架中移除磁碟區時,您可以使用標準查詢參數

正在清除我的書架中的所有磁碟區

如要從已驗證使用者書架中移除所有磁碟區,請將 HTTP POST 傳送至 URI,格式如下:

https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf/clearVolumes

shelf 路徑參數替換為書架的 ID。如要進一步瞭解書架 ID,請參閱 Google 圖書 ID 一節。

要求

以下範例說明如何清除「我的收藏」書架:

POST https://www.googleapis.com/books/v1/mylibrary/bookshelves/0/clearVolumes?key=yourAPIKey
Authorization: /* auth token here */
Content-Type: application/json
Content-Length: CONTENT_LENGTH
  

注意:使用者必須先完成驗證,才能修改存放區,因此必須使用 POST 要求提供 Authorization HTTP 標頭。不過,這個 POST 不需要任何資料。

回應

如果要求成功,伺服器會以 204 No Content 狀態碼回應。

選用查詢參數

從其中一個已驗證的使用者書架中清除所有磁碟區時,您可以使用標準查詢參數

查詢參數參考資料

本節概略說明可與 Books API 搭配使用的查詢參數。所有參數值都必須經過網址編碼。

標準查詢參數

如要查看所有圖書 API 作業適用的查詢參數,請參閱系統參數

API 專屬查詢參數

下表匯總了僅適用於 Books API 中特定作業的請求參數。

參數 意義 Notes 適用性
download 根據下載量設定磁碟區。
  • 目前唯一支援的值為 epub
  • 你可能需要購買才能使用下載功能。
filter 依數量類型和供應情形篩選搜尋結果。
  • 支援的篩選器如下:
    • filter=partial - 將結果限制在至少部分文字可預覽的音量中。
    • filter=full - 將結果限制在可供查看所有文字的音量。
    • filter=free-ebooks - 將結果限制在免費的 Google 電子書中。
    • filter=paid-ebooks - 將搜尋結果限制為包含價格的 Google 電子書。
    • filter=ebooks - 將結果限制在 Google 電子書 (付費或免費) 中。非電子書的試閱內容是出版商限定內容,不對外販售或雜誌。

 

langRestrict 限制傳回為使用指定語言標記的磁碟區。
  • langRestrict 指定為兩個字母的 ISO-639-1 代碼,例如「quot;en」或「quot;fr」,即可限制搜尋結果包含特定語言的搜尋結果。
maxResults 此要求傳回的元素數量上限。
  • 針對集合中所有項目的要求,您可以在要求的參數中指定 startIndexmaxResults,藉此將結果分頁。
  • 預設:maxResults=10
  • 允許的最大值:maxResults=40.
orderBy

磁碟區搜尋結果的順序。

  • 根據預設,搜尋要求會傳回 maxResults 結果,其中 maxResults 是分頁中使用的參數,並依相關性優先排序。
  • 如要變更排序方式,請將 orderBy 參數設為下列其中一個值:
    • orderBy=relevance - 依最低相關程度傳回搜尋結果 (這是預設值)。
    • orderBy=newest - 傳回最新到最舊日期的順序搜尋結果。
printType 僅限書籍或雜誌。
  • 支援的值如下:
    • printType=all - 傳回所有音量內容類型 (無限制)。此為預設值。
    • printType=books - 僅傳回書籍。
    • printType=magazines - 僅傳回雜誌。
projection 限制傳回部分欄位的音量資訊。
  • 支援的投影如下:
    • projection=full - 包含所有音量中繼資料 (預設)。
    • projection=lite - 僅包含磁碟區主題和存取中繼資料。
q 全文查詢字串。
  • 建立查詢時,請用 q=term1+term2_term3 格式列出搜尋字詞,並以 '+' 分隔。(此外,您也可以使用空格來分隔這些空格,但就像所有查詢參數值一樣,空格都必須經過網址編碼處理)。API 會傳回所有與搜尋字詞相符的項目 (例如在字詞之間使用 AND 運算子)。與 Google 的網頁搜尋一樣,API 會搜尋完整字詞 (以及具有相同詞語的相關字詞),而不是子字串。
  • 如要搜尋完全符合的詞組,請用引號括住詞組:q="exact phrase"
  • 如要排除與指定字詞相符的項目,請使用 q=-term 表單。
  • 搜尋字詞無須區分大小寫。
  • 範例:如要搜尋包含完全比對 "Elizabeth Bennet""Darcy" 字詞,但不含 "Austen" 字詞的所有項目,請使用下列查詢參數值:
    q="Elizabeth+Bennet"+Darcy-Austen
  • 您可以在搜尋字詞中指定特殊 (區分大小寫) 關鍵字,以便在特定欄位中搜尋,例如:
    • intitle:傳回標題中包含這個關鍵字的文字。
    • inauthor:傳回系統在作者中找到關鍵字後找到的結果。
    • inpublisher:傳回在發布商中找到這個關鍵字後,傳回的結果。
    • subject:傳回在關鍵字類別清單中列出的關鍵字結果。
    • isbn:傳回關鍵字後方的文字是 ISBN 號碼的結果。
    • lccn:傳回這個關鍵字之下的文字是美國國會圖書館控制號碼的結果。
    • oclc:傳回這個關鍵字之下的文字是「Online Library Library Center」號碼。
startIndex 集合中用於啟動結果清單的位置。
  • 針對集合中所有項目的要求,您可以在要求的參數中指定 startIndexmaxResults,藉此將結果分頁。
  • 第一個項目的索引為 0。
volumeId 用於識別與要求相關聯的磁碟區。
  • 指定要從書架中新增或移除的磁碟區。