Sử dụng API

Nội dung

Giới thiệu

Tài liệu này dành cho các nhà phát triển muốn viết các ứng dụng có thể tương tác với Books API (API Sách). Google Sách có sứ mệnh số hoá nội dung sách trên thế giới và giúp mọi người dễ dàng tìm thấy nội dung đó trên web. Books API (API Sách) là một cách để tìm kiếm và truy cập vào nội dung đó, cũng như để tạo và xem hoạt động cá nhân hoá xung quanh nội dung đó.

Nếu chưa hiểu rõ các khái niệm của Google Sách, bạn nên đọc phần Bắt đầu trước khi bắt đầu viết mã.

Uỷ quyền cho yêu cầu và nhận dạng ứng dụng của bạn

Mọi yêu cầu mà ứng dụng của bạn gửi tới Books API cần xác định ứng dụng của bạn cho Google. Có 2 cách để xác định ứng dụng của bạn: sử dụng mã thông báo OAuth 2.0 (cũng cho phép yêu cầu) và/hoặc sử dụng khoá API của ứng dụng. Dưới đây là cách xác định nên sử dụng tuỳ chọn nào trong số đó:

  • Nếu yêu cầu cần được uỷ quyền (chẳng hạn như yêu cầu dữ liệu cá nhân của một cá nhân) thì ứng dụng phải cung cấp mã OAuth 2.0 cùng với yêu cầu đó. Ứng dụng cũng có thể cung cấp khoá API (không bắt buộc).
  • Nếu yêu cầu đó không đòi hỏi việc uỷ quyền (chẳng hạn như yêu cầu đối với dữ liệu công khai) thì ứng dụng phải cung cấp khoá API hoặc mã OAuth 2.0, hoặc cả hai – tuỳ theo phương án nào thuận tiện nhất cho bạn.

Giới thiệu về giao thức cấp phép

Ứng dụng của bạn phải sử dụng OAuth 2.0 để cấp phép các yêu cầu. Chúng tôi không hỗ trợ giao thức cấp phép nào khác. Nếu ứng dụng của bạn sử dụng chức năng Đăng nhập bằng Google, thì Google sẽ giúp bạn xử lý một số bước trong quá trình cấp phép.

Cấp phép cho các yêu cầu bằng OAuth 2.0

Các yêu cầu gửi dữ liệu không công khai của người dùng tới API Books phải do người dùng đã xác thực cấp phép.

Các chi tiết của quy trình cấp phép đối với OAuth 2.0 sẽ khác nhau đôi chút tuỳ thuộc vào loại ứng dụng bạn đang viết. Quy trình chung sau đây áp dụng cho tất cả các loại ứng dụng:

  1. Khi tạo ứng dụng của mình, bạn sẽ đăng ký ứng dụng bằng Google API Console. Sau đó, Google cung cấp thông tin bạn sẽ cần sau này, chẳng hạn như mã ứng dụng khách và mật khẩu ứng dụng khách.
  2. Kích hoạt Books API (API Sách) trong Google API Console. (Nếu API không được liệt kê trong API Console, thì hãy bỏ qua bước này.)
  3. Khi cần quyền truy cập vào dữ liệu người dùng, ứng dụng sẽ yêu cầu Google cung cấp phạm vi truy cập cụ thể.
  4. Google hiển thị màn hình yêu cầu sự đồng ý cho người dùng để hỏi xem họ có cho phép ứng dụng của bạn yêu cầu một số dữ liệu của họ hay không.
  5. Nếu người dùng đồng ý, thì Google sẽ cấp cho ứng dụng của bạn một mã truy cập ngắn hạn.
  6. Sau đó, ứng dụng yêu cầu dữ liệu người dùng và đính kèm mã truy cập trong yêu cầu.
  7. Nếu xác định rằng yêu cầu của bạn và mã này là hợp lệ, Google sẽ trả về dữ liệu mà ứng dụng yêu cầu.

Một số quy trình cấp phép có các bước bổ sung khác, chẳng hạn như sử dụng mã làm mới để lấy mã truy cập mới. Để biết thông tin chi tiết về quy trình cho các loại ứng dụng khác nhau, hãy xem tài liệu về OAuth 2.0 của Google.

Dưới đây là thông tin về phạm vi của OAuth 2.0 cho API Sách:

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

Để yêu cầu quyền truy cập bằng OAuth 2.0, ứng dụng của bạn cần thông tin về mức truy cập, cũng như thông tin mà Google cung cấp khi bạn đăng ký ứng dụng của mình (chẳng hạn như mã ứng dụng khách và mật khẩu ứng dụng khách).

Mẹo: Thư viện ứng dụng API Google có thể xử lý một số bước trong quy trình cấp phép cho bạn. Thư viện này được cung cấp bằng nhiều ngôn ngữ lập trình. Hãy xem trang về các thư viện và mẫu để biết thêm chi tiết.

Nhận và sử dụng khoá API

Các yêu cầu gửi dữ liệu công khai đến Books API phải đi kèm với giá trị nhận dạng, có thể là khoá API hoặc mã truy cập.

Cách lấy khoá API:

  1. Mở trang Thông tin đăng nhập trong Bảng điều khiển API.
  2. API này hỗ trợ hai loại thông tin xác thực. Tạo bất cứ thông tin đăng nhập nào phù hợp với dự án của bạn:
    • OAuth 2.0: Bất cứ khi nào ứng dụng của bạn yêu cầu dữ liệu riêng tư của người dùng, ứng dụng phải gửi mã thông báo OAuth 2.0 cùng với yêu cầu đó. Trước tiên, ứng dụng của bạn sẽ gửi một mã ứng dụng khách và có thể là mật khẩu ứng dụng khách để lấy mã thông báo. Bạn có thể tạo thông tin đăng nhập OAuth 2.0 cho các ứng dụng web, tài khoản dịch vụ hoặc ứng dụng đã cài đặt.

      Để biết thêm thông tin, hãy xem tài liệu về OAuth 2.0.

    • Khoá API: Yêu cầu không cung cấp mã thông báo OAuth 2.0 phải gửi khoá API. Khoá này giúp xác định dự án của bạn và cung cấp quyền truy cập, hạn mức và báo cáo API.

      API này hỗ trợ một số loại quy định hạn chế đối với khoá API. Nếu khoá API mà bạn cần chưa tồn tại, hãy tạo khoá API trong Bảng điều khiển bằng cách nhấp vào Tạo thông tin đăng nhập > Khoá API. Bạn có thể hạn chế khoá đó trước khi sử dụng trong phiên bản phát hành công khai bằng cách nhấp vào Restrict key (Hạn chế khoá) rồi chọn một trong các Hạn chế (Hạn chế).

Để giữ an toàn cho khoá API, hãy làm theo các phương pháp hay nhất để sử dụng khoá API một cách an toàn.

Sau khi bạn có khoá API, ứng dụng của bạn có thể thêm tham số truy vấn key=yourAPIKey vào tất cả các URL yêu cầu.

Khoá API an toàn để nhúng trong URL và không cần sử dụng phương thức mã hoá nào.

Mã Google Sách

Bạn cần chỉ định trường mã nhận dạng bằng một số lệnh gọi phương thức API. Có 3 loại mã nhận dạng được sử dụng trong Google Sách:

  • Mã tập sách – Các chuỗi duy nhất được cấp cho mỗi tập mà Google Sách biết. Ví dụ về mã nhận dạng ổ đĩa là _LettPDhwR0C. Bạn có thể dùng API để lấy mã ổ đĩa bằng cách đưa ra yêu cầu trả về tài nguyên ổ đĩa. Bạn có thể tìm thấy mã ổ đĩa trong trường id của ổ đĩa đó.
  • Mã nhận dạng giá sách – Giá trị dạng số được cung cấp cho giá sách trong thư viện của người dùng. Google cung cấp một số giá sách được xác định trước cho mọi người dùng với các mã sau:
    • Mục yêu thích: 0
    • Đã mua: 1
    • Cần đọc: 2
    • Đang đọc: 3
    • Đã đọc: 4
    • Đã đánh giá: 5
    • Mới xem gần đây: 6
    • Sách điện tử của tôi: 7
    • Sách dành cho bạn: 8 Nếu chúng tôi không có đề xuất nào cho người dùng, thì kệ này không tồn tại.
    Giá sách tuỳ chỉnh có mã nhận dạng lớn hơn 1.000. Mã giá sách là mã duy nhất cho một người dùng cụ thể, tức là hai người dùng có thể có một giá sách có cùng một mã tham chiếu đến nhiều giá sách. Bạn có thể dùng API để lấy mã giá sách bằng cách tạo một yêu cầu trả về tài nguyên Giá sách. Bạn có thể tìm thấy mã giá sách đó trong trường id.
  • Mã nhận dạng người dùng – Các giá trị số duy nhất được gán cho mỗi người dùng. Các giá trị này không nhất thiết phải giống với giá trị mã nhận dạng được dùng trong các dịch vụ khác của Google. Hiện tại, cách duy nhất để truy xuất mã nhận dạng người dùng là trích xuất mã đó từ bản thân Liên kết trong tài nguyên Giá sách được truy xuất bằng một yêu cầu đã xác thực. Người dùng cũng có thể lấy mã nhận dạng người dùng riêng trên trang web Sách. Một người dùng không thể lấy mã nhận dạng người dùng cho một người dùng khác thông qua API hoặc trang web Sách; người dùng còn lại sẽ phải chia sẻ thông tin đó một cách rõ ràng, chẳng hạn như qua email.

Mã nhận dạng trên trang web Google Sách

Mã nhận dạng mà bạn sử dụng với Books API (API Sách) cũng chính là mã nhận dạng bạn dùng trên trang web Google Sách.

  • Mã tập

    Khi xem một tập cụ thể trên trang web, bạn có thể tìm thấy mã tập đó trong tham số URL id. Dưới đây là một ví dụ:

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

  • Mã giá sách

    Khi xem một giá sách cụ thể trên trang web, bạn có thể thấy mã giá sách trong tham số URL as_coll. Dưới đây là một ví dụ:

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

  • Mã nhận dạng người dùng

    Khi xem thư viện của mình trên trang web, bạn có thể tìm thấy mã nhận dạng người dùng trong tham số URL uid. Dưới đây là một ví dụ:

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

Đặt vị trí của người dùng

Google Sách tôn trọng bản quyền, hợp đồng và các hạn chế pháp lý khác liên quan đến vị trí của người dùng cuối. Do đó, một số người dùng có thể không truy cập được vào nội dung sách ở một số quốc gia. Ví dụ: một số cuốn sách chỉ "có thể xem trước" ở Hoa Kỳ; chúng tôi sẽ bỏ qua các đường liên kết xem trước như vậy đối với người dùng ở các quốc gia khác. Do đó, kết quả API bị hạn chế dựa trên địa chỉ IP của máy chủ hoặc ứng dụng khách của bạn.

Xử lý số lượng

Thực hiện tìm kiếm

Bạn có thể tìm kiếm tập bằng cách gửi yêu cầu HTTP GET đến URI sau:

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

Yêu cầu này có một thông số bắt buộc duy nhất:

  • q – Tìm kiếm các tập có chứa chuỗi văn bản này. Bạn có thể chỉ định một số từ khoá đặc biệt trong cụm từ tìm kiếm để tìm kiếm trong các trường cụ thể, chẳng hạn như:
    • intitle: Trả về kết quả mà có văn bản theo sau từ khoá này trong tiêu đề.
    • inauthor: Trả về kết quả có văn bản theo sau từ khoá này thuộc về tác giả.
    • inpublisher: Trả về kết quả khi tìm thấy văn bản theo sau từ khoá này trong nhà xuất bản.
    • subject: Trả về kết quả mà văn bản theo sau từ khoá này được liệt kê trong danh sách danh mục của tập.
    • isbn: Trả về kết quả mà văn bản đứng sau từ khoá này là số ISBN.
    • lccn: Trả về các kết quả mà văn bản theo sau từ khoá này là Số kiểm soát của Thư viện Quốc hội Hoa Kỳ.
    • oclc: Trả về kết quả mà văn bản theo sau từ khoá này là số của Trung tâm thư viện máy tính trực tuyến.

Yêu cầu

Dưới đây là ví dụ về cách tìm kiếm "Hoa cho Algernon" của Daniel Keyes:

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

Lưu ý: Việc tìm kiếm không yêu cầu xác thực, vì vậy, bạn không phải cung cấp tiêu đề HTTP Authorization với yêu cầu GET. Tuy nhiên, nếu lệnh gọi được thực hiện bằng phương thức xác thực, thì mỗi Âm lượng sẽ bao gồm thông tin dành riêng cho người dùng, chẳng hạn như trạng thái đã mua.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và kết quả về ổ đĩa:

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
}

Tham số truy vấn không bắt buộc

Ngoài tham số truy vấn chuẩn, bạn có thể sử dụng các tham số truy vấn sau đây khi thực hiện tìm kiếm tập sách.

Định dạng tải xuống

Bạn sử dụng tham số download để giới hạn kết quả được trả về cho các tập có định dạng tải xuống hiện có là epub bằng cách đặt thành giá trị epub.

Ví dụ sau đây về việc tìm những cuốn sách có thể tải xuống ở định dạng epub:

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

Bạn có thể sử dụng tham số filter để hạn chế hơn nữa kết quả trả về bằng cách đặt tham số này thành một trong các giá trị sau:

  • partial – Trả về kết quả trong đó ít nhất các phần của văn bản có thể xem trước.
  • full – Chỉ trả về kết quả khi tất cả văn bản đều có thể xem được.
  • free-ebooks – Chỉ trả về những kết quả là sách điện tử miễn phí trên Google.
  • paid-ebooks – Chỉ trả về những kết quả là các sách điện tử trên Google kèm theo mức giá.
  • ebooks – Chỉ trả về những kết quả là Sách điện tử trên Google, có tính phí hoặc miễn phí. Ví dụ về những nội dung không phải Sách điện tử là nội dung của nhà xuất bản được cung cấp ở dạng bản xem trước có giới hạn và không để bán, hoặc tạp chí.

Ví dụ sau đây giới hạn kết quả tìm kiếm ở những kết quả có sẵn dưới dạng Sách điện tử miễn phí:

GET https://www.googleapis.com/books/v1/volumes?q=flowers&filter=free-ebooks&key=yourAPIKey
Phân trang

Bạn có thể phân trang danh sách tập bằng cách chỉ định hai giá trị trong các tham số cho yêu cầu:

  • startIndex – Vị trí trong tập hợp mà tại đó bắt đầu. Chỉ mục của mục đầu tiên là 0.
  • maxResults – Số lượng kết quả tối đa cần trả về. Giá trị mặc định là 10 và giá trị tối đa được phép là 40.

Bạn có thể dùng tham số printType để hạn chế kết quả được trả về ở một loại bản in hoặc ấn phẩm cụ thể bằng cách đặt tham số đó thành một trong các giá trị sau:

  • all – Không hạn chế theo loại in (mặc định).
  • books – Chỉ trả về kết quả là sách.
  • magazines – Trả về kết quả là tạp chí.

Ví dụ sau đây giới hạn kết quả tìm kiếm đối với tạp chí:

GET https://www.googleapis.com/books/v1/volumes?q=time&printType=magazines&key=yourAPIKey
Dự kiến

Bạn có thể sử dụng tham số projection với một trong các giá trị sau để chỉ định một tập hợp các trường Âm lượng được xác định trước cần trả về:

  • full – Trả về tất cả trường Tập.
  • lite – Chỉ trả về một số trường nhất định. Hãy xem nội dung mô tả các trường được đánh dấu bằng dấu hoa thị kép trong phần Tài liệu tham khảo về thể tích để tìm hiểu xem những trường nào được đưa vào.

Ví dụ sau đây trả về kết quả tìm kiếm kèm theo thông tin về số lượng hạn chế:

GET https://www.googleapis.com/books/v1/volumes?q=flowers&projection=lite&key=yourAPIKey
Sắp xếp

Theo mặc định, yêu cầu tìm kiếm số lượng lớn sẽ trả về kết quả maxResults, trong đó maxResults là thông số được dùng để phân trang (ở trên), được sắp xếp theo mức độ liên quan với cụm từ tìm kiếm.

Bạn có thể thay đổi thứ tự bằng cách đặt thông số orderBy thành một trong các giá trị sau:

  • relevance – Trả về kết quả theo thứ tự mức độ liên quan của cụm từ tìm kiếm (đây là mặc định).
  • newest – Trả về kết quả theo thứ tự xuất bản gần đây nhất đến ít nhất xuất bản gần đây nhất.

Ví dụ sau đây liệt kê các kết quả theo ngày xuất bản, từ mới nhất đến cũ nhất:

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

Truy xuất một âm lượng cụ thể

Bạn có thể truy xuất thông tin về một ổ đĩa cụ thể bằng cách gửi yêu cầu HTTP GET đến URI tài nguyên của Âm lượng:

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

Thay thế tham số đường dẫn volumeId bằng mã nhận dạng của ổ đĩa cần truy xuất. Hãy xem phần Mã nhận dạng sách trên Google Sách để biết thêm thông tin về mã tập.

Yêu cầu

Dưới đây là ví dụ về yêu cầu GET nhận được một ổ đĩa duy nhất:

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

Lưu ý: Việc truy xuất thông tin về ổ đĩa không yêu cầu xác thực. Vì vậy, bạn không phải cung cấp tiêu đề HTTP Authorization với yêu cầu GET. Tuy nhiên, nếu lệnh gọi được thực hiện bằng quy trình xác thực, thì Tập sẽ bao gồm thông tin dành riêng cho người dùng, chẳng hạn như trạng thái đã mua.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và tài nguyên Tập được yêu cầu:

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"
 }
}
Thông tin truy cập

Phần accessInfo được đặc biệt quan tâm đến việc xác định những tính năng nào có sẵn cho sách điện tử. epub là sách điện tử có định dạng văn bản tự xuống dòng, phần epub sẽ có thuộc tính isAvailable cho biết liệu có loại sách điện tử này hay không. Ứng dụng sẽ có đường liên kết tải xuống nếu có sách mẫu hoặc người dùng có thể đọc sách do đã mua hoặc do sách thuộc phạm vi công cộng tại vị trí của người dùng. pdf dành cho Google Sách cho biết phiên bản trang được quét của sách điện tử có các thông tin chi tiết tương tự như sách có sẵn hay không và đường liên kết tải xuống. Bạn nên dùng các tệp epub cho thiết bị đọc sách điện tử và Điện thoại thông minh, vì các trang được quét có thể khó đọc trên những thiết bị này. Nếu không có phần accessInfo thì cuốn sách đó sẽ không được cung cấp dưới dạng sách điện tử trên Google.

Tham số truy vấn không bắt buộc

Ngoài các tham số truy vấn chuẩn, bạn có thể sử dụng tham số truy vấn sau đây khi truy xuất một ổ đĩa cụ thể.

Dự kiến

Bạn có thể sử dụng tham số projection với một trong các giá trị sau để chỉ định một tập hợp các trường Âm lượng được xác định trước cần trả về:

  • full – Trả về tất cả trường Tập.
  • lite – Chỉ trả về một số trường nhất định. Hãy xem nội dung mô tả các trường được đánh dấu bằng dấu hoa thị kép trong phần Tài liệu tham khảo về thể tích để tìm hiểu xem những trường nào được đưa vào.

Ví dụ sau đây trả về thông tin về ổ đĩa bị giới hạn cho một ổ đĩa:

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

Xử lý giá sách

Truy xuất danh sách giá sách công khai của người dùng

Bạn có thể truy xuất danh sách giá sách công khai của người dùng bằng cách gửi yêu cầu HTTP GET đến URI có định dạng sau:

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

Thay thế thông số đường dẫn userId bằng ID của người dùng có giá sách bạn muốn truy xuất. Hãy xem phần Mã nhận dạng trên Google Sách để biết thêm thông tin về mã nhận dạng người dùng.

Yêu cầu

Dưới đây là ví dụ:

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

Vì người dùng không cần phải được xác thực để truy xuất thông tin liên quan đến giá sách công khai, nên bạn không phải cung cấp tiêu đề HTTP Authorization với yêu cầu GET.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và danh sách giá sách:

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"
  },
  ...
 ]
}

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi truy xuất danh sách giá sách công khai của người dùng.

Truy xuất một giá sách công khai cụ thể

Bạn có thể truy xuất một giá sách công khai cụ thể bằng cách gửi yêu cầu HTTP GET đến URI theo định dạng sau:

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

Thay thế thông số đường dẫn userIdkệ bằng mã nhận dạng chỉ định người dùng và giá sách bạn muốn truy xuất. Hãy xem phần Mã nhận dạng trên Google Sách để biết thêm thông tin.

Yêu cầu

Dưới đây là ví dụ:

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

Vì người dùng không cần phải được xác thực để truy xuất thông tin liên quan đến giá sách công khai, nên bạn không phải cung cấp tiêu đề HTTP Authorization với yêu cầu GET.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và tài nguyên giá sách:

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"
}

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi truy xuất một giá sách công khai cụ thể.

Truy xuất danh sách các tập trên giá sách công cộng

Bạn có thể truy xuất danh sách các tập trên giá sách công khai của người dùng bằng cách gửi HTTP GET yêu cầu URI có định dạng sau:

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

Yêu cầu

Dưới đây là ví dụ:

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

Thay thế thông số đường dẫn userIdkệ bằng mã nhận dạng chỉ định người dùng và giá sách bạn muốn truy xuất. Hãy xem phần Mã nhận dạng trên Google Sách để biết thêm thông tin.

Vì người dùng không cần phải được xác thực để truy xuất thông tin liên quan đến giá sách công khai, nên bạn không phải cung cấp tiêu đề HTTP Authorization với yêu cầu GET.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và danh sách giá sách của người dùng:

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
}

Tham số truy vấn không bắt buộc

Ngoài tham số truy vấn chuẩn, bạn có thể sử dụng tham số truy vấn sau khi truy xuất danh sách các tập trên giá sách công khai.

Phân trang

Bạn có thể phân trang danh sách tập bằng cách chỉ định hai giá trị trong các tham số cho yêu cầu:

  • startIndex – Vị trí trong tập hợp mà tại đó bắt đầu. Chỉ mục của mục đầu tiên là 0.
  • maxResults – Số lượng kết quả tối đa cần trả về. Giá trị mặc định là 10 và giá trị tối đa được phép là 40.

Làm việc với các giá sách trong "Thư viện của tôi"

Tất cả yêu cầu "Thư viện của tôi" đều áp dụng cho dữ liệu của người dùng đã xác thực.

Truy xuất danh sách giá sách của tôi

Bạn có thể truy xuất danh sách tất cả giá sách của người dùng đã xác thực bằng cách gửi yêu cầu HTTP GET đến URI có định dạng sau:

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

Yêu cầu

Dưới đây là ví dụ:

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

Lưu ý: Người dùng phải được xác thực để truy xuất danh sách giá sách "Thư viện của tôi". Vì vậy, bạn phải cung cấp tiêu đề HTTP Authorization cùng với yêu cầu GET.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và danh sách tất cả giá sách của người dùng đã xác thực hiện tại:

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"
  }
 ]
}

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi truy xuất danh sách giá sách của người dùng đã xác thực.

Đang truy xuất danh sách các tập có trên giá sách của tôi

Bạn có thể truy xuất danh sách các tập trên giá sách của người dùng đã xác thực bằng cách gửi yêu cầu HTTP GET đến URI có định dạng sau:

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

Thay thế tham số đường dẫn shelf (giá sách) bằng mã nhận dạng của giá sách. Hãy xem phần Mã nhận dạng giá sách trên Google Sách để biết thêm thông tin về mã giá sách.

Yêu cầu

Dưới đây là ví dụ:

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

Lưu ý: Người dùng phải được xác thực để truy xuất danh sách các ổ đĩa "Thư viện của tôi". Vì vậy, bạn phải cung cấp tiêu đề HTTP Authorization cùng với yêu cầu GET.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 200 OK và danh sách số lượng giá sách:

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
}

Tham số truy vấn không bắt buộc

Ngoài tham số truy vấn chuẩn, bạn có thể sử dụng tham số truy vấn sau đây khi truy xuất danh sách các tập trên một trong các giá sách của người dùng đã xác thực.

Phân trang

Bạn có thể phân trang danh sách tập bằng cách chỉ định hai giá trị trong các tham số cho yêu cầu:

  • startIndex – Vị trí trong tập hợp mà tại đó bắt đầu. Chỉ mục của mục đầu tiên là 0.
  • maxResults – Số lượng kết quả tối đa cần trả về. Giá trị mặc định là 10.

Thêm một tập vào giá sách của tôi

Để thêm một tập vào giá sách của người dùng đã xác thực, hãy gửi yêu cầu HTTP POST đến URI có định dạng sau:

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

Thay thế tham số đường dẫn shelf (giá sách) bằng mã nhận dạng của giá sách. Hãy xem phần Mã nhận dạng giá sách trên Google Sách để biết thêm thông tin về mã giá sách.

Yêu cầu có một tham số truy vấn bắt buộc duy nhất:

Yêu cầu

Dưới đây là ví dụ về cách thêm "Hoa cho Algernon" vào giá sách "Yêu thích":

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

Lưu ý: Người dùng phải được xác thực để sửa đổi giá sách. Vì vậy, bạn phải cung cấp tiêu đề HTTP Authorization với yêu cầu POST. Tuy nhiên, bạn không cần cung cấp dữ liệu với POST này.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái HTTP 204 No Content.

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi thêm tập vào một trong các giá sách của người dùng đã xác thực.

Xóa một tập khỏi giá sách của tôi

Để xoá một tập khỏi giá sách của người dùng đã xác thực, hãy gửi HTTP POST đến URI có định dạng sau:

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

Thay thế tham số đường dẫn shelf (giá sách) bằng mã nhận dạng của giá sách. Hãy xem phần Mã nhận dạng giá sách trên Google Sách để biết thêm thông tin về mã giá sách.

Yêu cầu có một tham số truy vấn bắt buộc duy nhất:

Yêu cầu

Dưới đây là ví dụ về cách xoá "Hoa cho Algernon" khỏi giá sách "Mục yêu thích":

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

Lưu ý: Người dùng phải được xác thực để sửa đổi giá sách. Vì vậy, bạn phải cung cấp tiêu đề HTTP Authorization với yêu cầu POST. Tuy nhiên, bạn không cần cung cấp dữ liệu với POST này.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái 204 No Content.

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi xoá một tập khỏi một trong các giá sách của người dùng đã xác thực.

Xoá tất cả các tập khỏi giá sách của tôi

Để xoá tất cả các tập khỏi giá sách của người dùng đã xác thực, hãy gửi HTTP POST đến URI có định dạng sau:

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

Thay thế tham số đường dẫn shelf (giá sách) bằng mã nhận dạng của giá sách. Hãy xem phần Mã nhận dạng giá sách trên Google Sách để biết thêm thông tin về mã giá sách.

Yêu cầu

Dưới đây là ví dụ về cách xoá giá sách "Yêu thích":

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
  

Lưu ý: Người dùng phải được xác thực để sửa đổi giá sách. Vì vậy, bạn phải cung cấp tiêu đề HTTP Authorization với yêu cầu POST. Tuy nhiên, bạn không cần cung cấp dữ liệu với POST này.

Phản hồi

Nếu yêu cầu thành công, máy chủ sẽ phản hồi bằng mã trạng thái 204 No Content.

Tham số truy vấn không bắt buộc

Bạn có thể sử dụng tham số truy vấn chuẩn khi xoá tất cả các tập khỏi một trong các giá sách của người dùng đã xác thực.

Tài liệu tham khảo về tham số truy vấn

Phần này tóm tắt các tham số truy vấn mà bạn có thể sử dụng với Books API (API Sách).Tất cả giá trị thông số cần phải được mã hoá URL.

Tham số truy vấn chuẩn

Tham số truy vấn áp dụng cho tất cả hoạt động của API Books được ghi lại tại phần Tham số hệ thống.

Tham số truy vấn theo API cụ thể

Các tham số yêu cầu chỉ áp dụng cho các thao tác cụ thể trong Books API được tóm tắt trong bảng sau.

Thông số Ý nghĩa Ghi chú Khả năng áp dụng
download Giới hạn số lượng theo khả năng tải xuống.
  • Hiện tại, giá trị duy nhất được hỗ trợ là epub.
  • Bạn có thể phải mua gói thuê bao thì mới có quyền tải xuống.
filter Lọc kết quả tìm kiếm theo loại tập và phạm vi cung cấp.
  • Sau đây là các bộ lọc được hỗ trợ:
    • filter=partial – Giới hạn kết quả ở những tập có thể xem trước ít nhất một phần của văn bản.
    • filter=full – Giới hạn kết quả ở những tập có thể xem được tất cả văn bản.
    • filter=free-ebooks - Giới hạn kết quả ở sách điện tử miễn phí trên Google.
    • filter=paid-ebooks – Giới hạn kết quả trong Google Sách điện tử kèm theo giá để mua.
    • filter=ebooks – Giới hạn kết quả ở trong Google Sách điện tử, trả phí hoặc miễn phí.Ví dụ về nội dung không phải Sách điện tử sẽ là nội dung của nhà xuất bản được cung cấp ở chế độ xem trước có giới hạn chứ không phải để bán hoặc tạp chí.

 

langRestrict Giới hạn các tập được trả về ở những tập được gắn thẻ bằng ngôn ngữ đã chỉ định.
  • Giới hạn kết quả tìm kiếm ở những ngôn ngữ nhất định bằng cách chỉ định langRestrict cho mã gồm hai chữ cái theo ISO-639-1, chẳng hạn như "en" hoặc "fr".
maxResults Số lượng phần tử tối đa cần trả về với yêu cầu này.
  • Đối với mọi yêu cầu cho tất cả các mục trong một tập hợp, bạn có thể phân trang kết quả bằng cách chỉ định startIndexmaxResults trong các tham số cho yêu cầu đó.
  • Mặc định: maxResults=10
  • Giá trị tối đa cho phép: maxResults=40.
orderBy

Thứ tự của kết quả tìm kiếm số lượng.

  • Theo mặc định, yêu cầu tìm kiếm sẽ trả về các kết quả maxResults, trong đó maxResults là tham số dùng trong tính năng phân trang, được sắp xếp theo thứ tự phù hợp nhất xếp trước.
  • Bạn có thể thay đổi thứ tự bằng cách đặt thông số orderBy thành một trong các giá trị sau:
    • orderBy=relevance – Trả về kết quả tìm kiếm theo thứ tự từ ít liên quan nhất đến ít liên quan nhất (đây là mặc định).
    • orderBy=newest – Trả về kết quả tìm kiếm theo thứ tự từ ngày xuất bản mới nhất đến ngày cũ nhất.
printType Hạn chế đối với sách hoặc tạp chí.
  • Sau đây là các giá trị được hỗ trợ:
    • printType=all – Trả về tất cả các loại nội dung số lượng lớn (không hạn chế). Đây là tuỳ chọn mặc định.
    • printType=books – Chỉ trả lại sách.
    • printType=magazines - Chỉ trả lại tạp chí.
projection Hạn chế thông tin về khối lượng được trả về cho một nhóm nhỏ các trường.
  • Các phép chiếu được hỗ trợ:
    • projection=full – Bao gồm tất cả siêu dữ liệu về âm lượng (mặc định).
    • projection=lite – Chỉ bao gồm một chủ đề về số lượng và quyền truy cập vào siêu dữ liệu.
q Chuỗi truy vấn dạng văn bản đầy đủ.
  • Khi tạo truy vấn, hãy liệt kê các cụm từ tìm kiếm được phân tách bằng dấu "+", ở dạng q=term1+term2_term3. (Ngoài ra, bạn có thể phân tách các dấu cách bằng dấu cách, nhưng cũng như với tất cả giá trị tham số truy vấn, dấu cách phải được mã hoá URL.) API trả về tất cả các mục khớp với tất cả cụm từ tìm kiếm (chẳng hạn như sử dụng toán tử AND giữa các cụm từ). Giống như tính năng tìm kiếm trên web của Google, API tìm kiếm trên các từ hoàn chỉnh (và các từ liên quan có cùng gốc từ), chứ không phải chuỗi con.
  • Để tìm kiếm cụm từ chính xác, hãy đặt cụm từ đó trong dấu ngoặc kép: q="exact phrase".
  • Để loại trừ các mục nhập khớp với một cụm từ đã cho, hãy sử dụng biểu mẫu q=-term.
  • Cụm từ tìm kiếm không phân biệt chữ hoa chữ thường.
  • Ví dụ: để tìm kiếm tất cả các mục chứa cụm từ chính xác "Elizabeth Bennet" và từ "Darcy" nhưng không chứa từ "Austen", hãy sử dụng giá trị tham số truy vấn sau:
    q="Elizabeth+Bennet"+Darcy-Austen
  • Bạn có thể chỉ định một số từ khoá đặc biệt (phân biệt chữ hoa chữ thường) trong cụm từ tìm kiếm để tìm kiếm trong các trường cụ thể, chẳng hạn như:
    • intitle: Trả về kết quả có văn bản theo sau từ khoá này trong tiêu đề.
    • inauthor: Trả về kết quả có văn bản theo sau từ khoá này của tác giả.
    • inpublisher: Trả về kết quả có văn bản theo sau từ khoá này trong nhà xuất bản.
    • subject: Trả về kết quả có văn bản theo sau từ khoá này được liệt kê trong danh sách danh mục của tập.
    • isbn: Trả về kết quả có văn bản đứng sau từ khoá này là số ISBN.
    • lccn: Trả về kết quả mà văn bản theo sau từ khoá này là Số kiểm soát của Thư viện Quốc hội Hoa Kỳ.
    • oclc: Trả về kết quả có văn bản theo sau từ khoá này là số của Trung tâm thư viện máy tính trực tuyến.
startIndex Vị trí trong tập hợp mà từ đó bắt đầu danh sách kết quả.
  • Đối với mọi yêu cầu cho tất cả các mục trong một tập hợp, bạn có thể phân trang kết quả bằng cách chỉ định startIndexmaxResults trong các tham số cho yêu cầu đó.
  • Chỉ mục của mục đầu tiên là 0.
volumeId Xác định một khối lượng liên kết với yêu cầu.
  • Chỉ định số lượng để thêm hoặc xóa khỏi giá sách.