Bắt đầu

Tài liệu này trình bày chi tiết kiến thức cơ bản mà bạn cần để sử dụng API Google Sách.

Giới thiệu

Tài liệu này dành cho các nhà phát triển muốn viết ứng dụng có thể tương tác với API Google Sách. Google Sách có tầm nhìn số hóa các cuốn sách trên thế giới. Bạn cũng có thể sử dụng API Google Sách để tìm kiếm nội dung, sắp xếp thư viện cá nhân của người dùng đã xác thực và sửa đổi thư viện đó.

Trước khi bắt đầu

Tạo Tài khoản Google

Bạn cần có một Tài khoản Google cho mục đích thử nghiệm. Nếu đã có tài khoản thử nghiệm thì bạn đã sẵn sàng; bạn có thể truy cập vào giao diện người dùng Google Sách để thiết lập, chỉnh sửa hoặc xem dữ liệu thử nghiệm của mình.

Làm quen với Sách

Nếu chưa hiểu rõ về các khái niệm của Google Sách, bạn nên đọc tài liệu này và thử nghiệm với giao diện người dùng trước khi bắt đầu lập trình. Tài liệu này giả định rằng bạn đã quen thuộc với các khái niệm lập trình web và định dạng dữ liệu web.

Tìm hiểu về cách cho phép yêu cầu và xác định ứng dụng

Khi ứng dụng của bạn yêu cầu dữ liệu riêng tư, yêu cầu này phải được một người dùng đã xác thực có quyền truy cập vào dữ liệu đó cấp phép.

Cụ thể, mọi thao tác trong "Thư viện của tôi" trong API Google Sách đều được coi là riêng tư và yêu cầu xác thực và ủy quyền. Ngoài ra, chỉ người dùng sở hữu dữ liệu đó mới có thể thực hiện mọi thao tác sửa đổi dữ liệu Google Sách.

Khi ứng dụng của bạn yêu cầu dữ liệu công khai, yêu cầu này không cần phải được uỷ quyền, nhưng cần đi kèm với một giá trị nhận dạng, chẳng hạn như khoá API.

Để biết thông tin về cách ủy quyền yêu cầu và sử dụng khóa API, hãy xem Cấp phép cho yêu cầu và xác định ứng dụng của bạn trong tài liệu Sử dụng API.

Nền API Sách

Khái niệm về sách

Google Sách được xây dựng dựa trên bốn khái niệm cơ bản:

  • Âm lượng: Một ổ đĩa đại diện cho dữ liệu mà Google Sách lưu trữ về một cuốn sách hoặc tạp chí. Đây là tài nguyên chính trong API Sách. Tất cả các tài nguyên khác trong API này đều chứa hoặc chú thích một tập.
  • Giá sách: Giá sách là một tập hợp các tập. Google Sách cung cấp một tập hợp giá sách được xác định trước cho mỗi người dùng, một số giá trị trong số đó do người dùng quản lý hoàn toàn, một số giá trị trong số đó được tự động điền dựa trên hoạt động của người dùng và một số kết hợp trong số đó. Người dùng có thể tạo, sửa đổi hoặc xoá các giá sách khác luôn chứa đầy tập sách. Người dùng có thể đặt giá sách ở chế độ riêng tư hoặc công khai.

    Lưu ý: Hiện tại, bạn chỉ có thể tạo và xóa giá sách cũng như sửa đổi chế độ cài đặt quyền riêng tư trên giá sách thông qua trang web Google Sách.

  • Bài đánh giá: Bài đánh giá của một tập là sự kết hợp giữa điểm xếp hạng theo sao và/hoặc văn bản. Người dùng có thể gửi một bài đánh giá trên mỗi tập. Các bài đánh giá cũng được cung cấp từ các nguồn bên ngoài và được phân bổ chính xác.
  • Đọc vị trí: Vị trí đọc cho biết vị trí đọc cuối cùng trong một tập đối với người dùng. Mỗi người dùng chỉ có thể có một vị trí đọc trên mỗi tập. Nếu người dùng chưa từng mở tệp đó, thì vị trí đọc sẽ không tồn tại. Vị trí đọc có thể lưu trữ thông tin chi tiết về vị trí theo độ phân giải của một từ. Thông tin này luôn ở chế độ riêng tư đối với người dùng.

Mô hình dữ liệu API sách

Tài nguyên là một thực thể dữ liệu riêng lẻ có một giá trị nhận dạng duy nhất. API Sách hoạt động trên hai loại tài nguyên, dựa trên các khái niệm được mô tả ở trên:

  • Tài nguyên âm lượng: Biểu thị một âm lượng.
  • Tài nguyên giá sách: Đại diện cho một giá sách cho một người dùng cụ thể.

Mô hình dữ liệu API Sách dựa trên các nhóm tài nguyên, được gọi là bộ sưu tập:

Thu thập âm lượng
Bộ sưu tập tập, là tập hợp của mọi tài nguyên tập do Google Sách quản lý. Do đó, bạn không thể liệt kê tất cả tài nguyên về thể tích, nhưng bạn có thể liệt kê tất cả các tập phù hợp với một tập hợp cụm từ tìm kiếm.
Bộ sưu tập kệ sách
Một bộ sưu tập giá sách bao gồm mọi tài nguyên giá sách do Google Sách quản lý. Giá sách phải luôn được tham chiếu trong ngữ cảnh thư viện của người dùng cụ thể. Giá sách có thể không có hoặc nhiều tập.

Google cung cấp một bộ giá sách được xác định trước cho từng người dùng:

  • Mục yêu thích: Giá sách có thể thay đổi.
  • Đã mua: Được điền sẵn với số lượng người dùng đã mua. Người dùng không thể thêm hoặc xoá các tập theo cách thủ công.
  • Cách đọc: Giá sách có thể thay đổi.
  • Đang đọc: Giá sách có thể thay đổi.
  • Đã đọc: Giá sách có thể thay đổi.
  • Đã đánh giá: Được điền sẵn với số lượng người dùng đã đánh giá. Người dùng không thể thêm hoặc xoá các tập theo cách thủ công.
  • Được xem gần đây: Được điền sẵn với số lượng mà người dùng đã mở gần đây trong một trình đọc web. Người dùng không thể thêm ổ đĩa theo cách thủ công.
  • Sách điện tử của tôi: Giá sách có thể thay đổi. Sách đã mua sẽ được tự động thêm vào, nhưng bạn có thể tự xoá.
  • Sách cho bạn: Được điền sẵn bằng các đề xuất số lượng phù hợp. Nếu người dùng không có đề xuất nào thì giá sách này không tồn tại.

Ví dụ về kệ sách:

  • "Mục yêu thích"
    • "H Harry Potter"
  • "Sách điện tử của tôi"
    • "Chuyển"
    • "Chạng vạng"
    • "Những cô gái có hình xăm rồng"

Toán tử API sách

Bạn có thể gọi 5 phương thức khác nhau trên các bộ sưu tập và tài nguyên trong API Sách, như mô tả trong bảng sau.

Hoạt động Mô tả Liên kết HTTP REST
list Liệt kê một tập hợp con tài nguyên được chỉ định trong một bộ sưu tập. GET trên một URI bộ sưu tập.
chèn Chèn tài nguyên mới vào một bộ sưu tập (tạo một tài nguyên mới). POST trên một URI bộ sưu tập, nơi bạn chuyển dữ liệu cho một tài nguyên mới.
tải Xem một tài nguyên cụ thể. GET trên URI tài nguyên.
cập nhật Cập nhật một tài nguyên cụ thể. PUT trên URI tài nguyên, nơi bạn chuyển dữ liệu cho tài nguyên được cập nhật.
xóa Xoá một tài nguyên cụ thể. DELETE trên URI tài nguyên, nơi bạn chuyển dữ liệu để xoá tài nguyên.

Các toán tử được hỗ trợ cho nhiều loại tài nguyên được tóm tắt trong bảng dưới đây. Thao tác áp dụng cho dữ liệu riêng tư của người dùng được gọi là thao tác "Thư viện của tôi" và tất cả đều phải được xác thực.

Loại tài nguyên
Toán tử được hỗ trợ
danh sách chèn tải cập nhật xoá
Âm lượng có*
Kệ sách có* có, AUTHENTIded có* có, AUTHENTIded có, AUTHENTIded
Đọc vị trí có, AUTHENTIded có, AUTHENTIded có, AUTHENTIded có, AUTHENTIded

*Cả hai AUTHENTIded và phiên bản chưa được xác thực của các thao tác này đều có sẵn, trong đó các yêu cầu đã xác thực hoạt động trên dữ liệu "Thư viện của tôi" riêng tư của người dùng, và các yêu cầu chưa được xác thực chỉ hoạt động trên dữ liệu công khai.

Kiểu gọi

Có một số cách để gọi API:

  • Trực tiếp sử dụng REST
  • Sử dụng REST từ JavaScript (không cần mã phía máy chủ)

Kiến trúc chuyển trạng thái đại diện (REST)

REST là một kiểu kiến trúc phần mềm cung cấp một phương pháp nhất quán thuận tiện để yêu cầu và sửa đổi dữ liệu.

Thuật ngữ REST là tên viết tắt của "Đại diện chuyển trạng thái". Trong ngữ cảnh của API Google, thuật ngữ này đề cập đến việc sử dụng động từ HTTP để truy xuất và sửa đổi bản trình bày dữ liệu được Google lưu trữ.

Trong hệ thống RESTful, tài nguyên được lưu trữ trong kho lưu trữ dữ liệu; máy khách gửi yêu cầu rằng máy chủ thực hiện một hành động cụ thể (chẳng hạn như tạo, truy xuất, cập nhật hoặc xóa tài nguyên) và máy chủ thực hiện hành động đó và gửi phản hồi, thường ở dạng đại diện cho tài nguyên đã chỉ định.

Trong API RESTful của Google, ứng dụng chỉ định một thao tác bằng cách sử dụng động từ HTTP như POST, GET, PUT hoặc DELETE. Hàm này chỉ định tài nguyên theo một URI độc nhất trên toàn cầu có dạng như sau:

https://www.googleapis.com/apiName/apiVersion/resourcePath?parameters

Vì tất cả tài nguyên API đều có các URI có thể truy cập HTTP duy nhất, nên REST cho phép lưu vào bộ nhớ đệm dữ liệu và được tối ưu hoá để hoạt động với cơ sở hạ tầng phân tán của web.

Bạn có thể thấy định nghĩa về phương thức trong tài liệu về các tiêu chuẩn HTTP 1.1; các định nghĩa này bao gồm thông số kỹ thuật cho GET, POST, PUTDELETE.

REST trong API Sách

Các thao tác Sách được hỗ trợ sẽ ánh xạ trực tiếp đến động từ HTTP trong REST, như mô tả trong phần Hoạt động API sách.

Định dạng cụ thể cho URI API Sách là:

https://www.googleapis.com/books/v1/{collectionName}/resourceID?parameters

trong đó resourceID là giá trị nhận dạng tài nguyên giá sách hoặc giá sách và parameters là bất kỳ tham số nào áp dụng cho truy vấn. Xem bài viết Tham khảo về tham số truy vấn để biết thông tin chi tiết.

Định dạng của phần mở rộng đường dẫn resourceID cho phép bạn xác định tài nguyên mà mình đang dùng, ví dụ:

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

Xin lưu ý rằng các thao tác với mylibrary trong URI chỉ áp dụng cho dữ liệu thư viện riêng tư hiện tại đã được xác thực của người dùng. Tập hợp đầy đủ các URI được sử dụng cho từng thao tác được hỗ trợ trong API được tóm tắt trong tài liệu Tài liệu tham khảo API về sách.

Sau đây là một số ví dụ về cách thức hoạt động của việc này trong API Sách.

Tìm công cụ may chần:

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

Nhận thông tin về âm lượng s1gVAAAAYAAJ:

GET https://www.googleapis.com/books/v1/volumes/s1gVAAAAYAAJ

REST từ JavaScript

Bạn có thể gọi API sách bằng REST từ JavaScript (còn gọi là JSON-P), sử dụng tham số truy vấn callback và hàm gọi lại. Điều này cho phép bạn viết các ứng dụng đa dạng thức hiển thị dữ liệu Sách mà không cần viết mã phía máy chủ.

Lưu ý: Bạn có thể gọi các phương thức đã xác thực bằng cách truyền mã thông báo OAuth 2.0 thông qua tham số access_token. Để lấy mã thông báo OAuth 2.0 để sử dụng với JavaScript, hãy làm theo hướng dẫn trong phần OAuth 2.0 dành cho ứng dụng web phía máy khách. Trong thẻ "API Access" của APIs Console, hãy nhớ thiết lập Client-ID cho các ứng dụng web và sử dụng các thông tin xác thực OAuth 2.0 đó khi lấy mã thông báo.

Ví dụ sau đây sử dụng phương pháp này để hiển thị các kết quả tìm kiếm cho "thợ gốm":

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

Định dạng dữ liệu

JSON

JSON (Ký hiệu đối tượng JavaScript) là một định dạng dữ liệu phổ biến, độc lập về ngôn ngữ, cung cấp bản trình bày văn bản đơn giản của các cấu trúc dữ liệu tùy ý. Để biết thêm thông tin, hãy xem json.org.