Yêu cầu theo lô

Tài liệu này trình bày cách thực hiện nhiều lệnh gọi API cùng nhau để giảm số lượng kết nối mà ứng dụng của bạn phải thực hiện. Việc phân lô có thể giúp cải thiện hiệu quả của ứng dụng bằng cách giảm số lượt trọn vòng mạng và tăng công suất.

Tổng quan

Mỗi kết nối mà ứng dụng của bạn thực hiện sẽ dẫn đến một mức hao tổn nhất định. API Google Tài liệu hỗ trợ tính năng tạo lô để cho phép ứng dụng của bạn đặt nhiều đối tượng yêu cầu, mỗi đối tượng chỉ định một loại yêu cầu để thực hiện, vào một yêu cầu hàng loạt. Yêu cầu hàng loạt có thể tăng hiệu suất bằng cách kết hợp nhiều yêu cầu phụ vào một lệnh gọi duy nhất đến máy chủ, truy xuất lại một phản hồi.

Người dùng nên luôn tạo nhiều yêu cầu cùng lúc. Sau đây là một số ví dụ về các trường hợp mà bạn có thể sử dụng tính năng tạo lô:

  • Bạn vừa bắt đầu sử dụng API này và bạn có rất nhiều dữ liệu để tải lên.
  • Bạn cần cập nhật siêu dữ liệu hoặc thuộc tính (chẳng hạn như định dạng) trên nhiều đối tượng.
  • Bạn cần xoá nhiều đối tượng.

Giới hạn, việc uỷ quyền và những điều cần cân nhắc về phần phụ thuộc

Sau đây là danh sách các mục khác cần xem xét khi sử dụng tính năng cập nhật hàng loạt:

  • Mỗi yêu cầu hàng loạt, bao gồm tất cả các yêu cầu phụ, sẽ được tính là một yêu cầu API trong giới hạn sử dụng của bạn.
  • Yêu cầu hàng loạt sẽ được xác thực một lần. Phương thức xác thực duy nhất này áp dụng cho mọi đối tượng cập nhật theo lô trong yêu cầu.
  • Máy chủ xử lý các yêu cầu phụ theo thứ tự xuất hiện trong yêu cầu hàng loạt. Yêu cầu phụ sau có thể phụ thuộc vào hành động được thực hiện trong các yêu cầu phụ trước đó. Ví dụ: trong cùng một yêu cầu hàng loạt, người dùng có thể chèn văn bản vào tài liệu hiện có rồi tạo kiểu cho văn bản đó.

Chi tiết gói

Yêu cầu hàng loạt bao gồm một lệnh gọi phương thức batchUpdate với nhiều yêu cầu phụ, chẳng hạn như thêm rồi định dạng một tài liệu.

Mỗi yêu cầu đều được xác thực trước khi áp dụng. Tất cả các yêu cầu phụ trong quá trình cập nhật theo lô đều được áp dụng tỉ mỉ. Điều này nghĩa là nếu có yêu cầu không hợp lệ thì toàn bộ quá trình cập nhật sẽ không thành công và sẽ không có thay đổi nào (có thể phụ thuộc) được áp dụng.

Một số yêu cầu cung cấp phản hồi kèm theo thông tin về các yêu cầu được áp dụng. Ví dụ: tất cả các yêu cầu cập nhật hàng loạt để thêm đối tượng đều trả về phản hồi để bạn có thể truy cập vào siêu dữ liệu của đối tượng mới được thêm, chẳng hạn như mã nhận dạng hoặc tiêu đề.

Với phương pháp này, bạn có thể tạo toàn bộ tài liệu của Google bằng cách sử dụng một yêu cầu cập nhật theo lô API có nhiều yêu cầu phụ.

Định dạng của yêu cầu hàng loạt

Yêu cầu là một yêu cầu JSON chứa nhiều yêu cầu phụ lồng nhau với một thuộc tính bắt buộc: requests. Các yêu cầu này được tạo bằng một dãy gồm các yêu cầu riêng lẻ. Mỗi yêu cầu sử dụng JSON để đại diện cho đối tượng yêu cầu và chứa các thuộc tính của đối tượng đó.

Định dạng của phản hồi hàng loạt

Định dạng response cho yêu cầu hàng loạt tương tự như định dạng yêu cầu. Phản hồi của máy chủ chứa nội dung trả lời đầy đủ của một đối tượng phản hồi duy nhất.

Thuộc tính của đối tượng JSON chính có tên là replies. Phản hồi được trả về trong một mảng, trong đó mỗi phản hồi cho một trong các yêu cầu chiếm cùng thứ tự chỉ mục với yêu cầu tương ứng. Một số yêu cầu không có phản hồi và phản hồi tại chỉ mục mảng đó đang trống.

Ví dụ:

Mã mẫu sau đây cho thấy cách sử dụng tính năng tạo lô bằng API Tài liệu.

Yêu cầu

Ví dụ về yêu cầu hàng loạt này minh hoạ cách:

  • Chèn văn bản "Hello World" vào đầu tài liệu hiện có, với chỉ mục location1, sử dụng InsertTextRequest.

  • Cập nhật từ "Hello" (Xin chào) bằng UpdateTextStyleRequest. startIndexendIndex xác định range của văn bản được định dạng trong phân đoạn.

  • Sử dụng textStyle, đặt kiểu phông chữ thành in đậm và màu thành xanh dương cho riêng từ "Hello".

  • Khi sử dụng trường WriteControl, bạn có thể kiểm soát cách thực thi các yêu cầu ghi. Để biết thêm thông tin, hãy xem bài viết Thiết lập tính nhất quán của trạng thái bằngWriteControl.

{
   "requests":[
      {
         "insertText":{
            "location":{
               "index":1
            },
            "text":"Hello World"
         }
      },
      {
         "updateTextStyle":{
            "range":{
               "startIndex":1,
               "endIndex":6
            },
            "textStyle":{
               "bold":true,
               "foregroundColor":{
                  "color":{
                     "rgbColor":{
                        "blue":1
                     }
                  }
               }
            },
            "fields":"bold,foreground_color"
         }
      }
   ],
   "writeControl": {
      "requiredRevisionId": "REQUIRED_REVISION_ID"
  }
}

Thay thế REQUIRED_REVISION_ID bằng mã sửa đổi của tài liệu áp dụng yêu cầu ghi.

Phản hồi

Ví dụ về phản hồi hàng loạt này hiển thị thông tin về cách áp dụng từng yêu cầu con trong yêu cầu hàng loạt. Cả InsertTextRequest hoặc UpdateTextStyleRequest đều không chứa phản hồi, vì vậy, các giá trị chỉ mục của mảng tại [0] và [1] bao gồm dấu ngoặc nhọn trống. Yêu cầu hàng loạt sẽ hiển thị đối tượng WriteControl, cho biết cách các yêu cầu đã được thực thi.

{
   "replies":[
      {},
      {}
   ],
   "writeControl":{
      "requiredRevisionId":`REQUIRED_REVISION_ID`
   },
   "documentId":`DOCUMENT_ID`
}