Gửi nhiều yêu cầu cùng một lúc

Bạn có thể sử dụng yêu cầu hàng loạt bằng API Merchant để gửi nhiều yêu cầu trong một lệnh gọi API.

Yêu cầu hàng loạt là một yêu cầu HTTP tiêu chuẩn duy nhất chứa nhiều lệnh gọi API, bằng cách sử dụng loại nội dung multipart/mixed. Trong yêu cầu HTTP chính, mỗi chứa yêu cầu HTTP lồng nhau.

Bạn có thể gửi yêu cầu hàng loạt đến batchPath đã chỉ định cho API. Chiến lược phát hành đĩa đơn batchPath cho bản thử nghiệm API Merchant Center là batch/{sub-api}/v1beta . Bạn có thể tìm thấy batchPath cho các API khác trong khám phá của chúng tài liệu.

Sau đây là một số ví dụ về những trường hợp bạn nên phân nhóm các yêu cầu của mình:

  • Bạn vừa bắt đầu sử dụng API và có nhiều dữ liệu cần tải lên.
  • Người dùng thực hiện thay đổi đối với dữ liệu trong khi ứng dụng của bạn không kết nối mạng, và ứng dụng của bạn cần đồng bộ hoá dữ liệu cục bộ với máy chủ.

Nếu bạn có thắc mắc về việc phân lô HTTP hoặc nếu bạn muốn yêu cầu khả năng để gửi yêu cầu hàng loạt bằng khách hàng của chúng tôi các thư viện, gửi phản hồi.

Viết một yêu cầu hàng loạt

Dưới đây là ví dụ về một yêu cầu theo lô API Merchant. Yêu cầu này kết hợp một yêu cầu nhận để truy xuất kho hàng tại khu vực cho một sản phẩm và yêu cầu chèn cập nhật kho hàng tại địa phương cho cùng một sản phẩm.

Bạn nên tuân thủ chính xác định dạng của ví dụ:

  1. Dùng https://merchantapi.googleapis.com/batch/{sub-api}/v1beta làm cơ sở URL.
  2. Chỉ định ranh giới để phân tách từng yêu cầu lồng nhau, ví dụ:

    -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \

  3. Phân tách từng yêu cầu lồng nhau bằng ranh giới, ví dụ: --batch_inventory.

  4. Đưa Content-Type: application/http vào đầu mỗi mục lồng ghép của bạn.

  5. (Không bắt buộc) Sử dụng Content-ID để gắn nhãn từng yêu cầu lồng nhau bằng mã nhận dạng của riêng bạn. Ví dụ:

    Content-ID: <get:online:en:US:123456>.

  6. Bao gồm một dòng trống giữa tiêu đề, đường dẫn và nội dung của từng tiêu đề lồng nhau của bạn. Nếu yêu cầu lồng nhau không có phần nội dung, hãy để trống một dòng trước ranh giới tiếp theo.

  7. Đừng đưa URL cơ sở vào mỗi yêu cầu lồng nhau riêng lẻ.

  8. Kết thúc yêu cầu chính bằng ranh giới cuối cùng, ví dụ: --batch_inventory–.

curl https://merchantapi.googleapis.com/batch/inventories/v1beta \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get:online:en:US:123456>

GET /inventories/v1beta/accounts/123/products/online:en:US:123456/regionalInventories

--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>

POST /inventories/v1beta/accounts/123/products/online:en:US:123456/regionalInventories:insert

{
   "region: "123456",
    "price": {
        "amountMicros": "100000000",
        "currencyCode": "USD"
    }
}
--batch_inventory--
'

Nếu bạn cần thực hiện các lệnh gọi theo thứ tự nhất định, hãy gửi riêng các lệnh gọi đó và hãy đợi phản hồi cho yêu cầu đầu tiên rồi mới gửi yêu cầu tiếp theo.

Đọc một phản hồi hàng loạt

Dưới đây là ví dụ về phản hồi HTTP theo nhóm. Thứ tự của các phản hồi có thể không khớp với thứ tự của yêu cầu. Sử dụng Content-ID để xác định phần tử lồng nhau yêu cầu của mỗi phản hồi lồng nhau. Trong các câu trả lời, mỗi Content-ID là có tiền tố là response-.

--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
Content-Type: application/http
Content-ID: <response-get:online:en:US:123456>
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{}
--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
Content-Type: application/http
Content-ID: <response-post:online:en:US:123456>
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{
  "name": "accounts/123/products/online:en:US:123456/regionalInventories/123456",
  "region": "123456",
  "price": {
    "amountMicros": "100000000",
    "currencyCode": "USD"
  }
}
--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ--
'