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 với API Merchant để gửi nhiều yêu cầu trong một lệnh gọi API duy nhất.

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

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

Dưới đây là một số ví dụ về thời điểm bạn có thể muốn phân lô yêu cầu của mình:

  • Bạn chỉ mới bắt đầu sử dụng API này và có nhiều dữ liệu cần tải lên.
  • Người dùng đã thực hiện các thay đổi đối với dữ liệu trong khi ứng dụng của bạn ở chế độ ngoại tuyến 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 tạo lô HTTP hoặc nếu muốn muốn được gửi yêu cầu hàng loạt bằng thư viện ứng dụng của chúng tôi, hãy gửi ý kiến phản hồi.

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

Dưới đây là yêu cầu hàng loạt API Merchant Center mẫu. 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 của một sản phẩm và một 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 làm theo đúng định dạng của ví dụ:

  1. Dùng https://merchantapi.googleapis.com/batch/{sub-api}/v1beta làm URL cơ sở.
  2. Chỉ định một 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. Thêm Content-Type: application/http ở đầu mỗi yêu cầu lồng nhau.

  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 mỗi yêu cầu lồng nhau. Nếu yêu cầu được lồng 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.

  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 thi các lệnh gọi theo thứ tự nhất định, hãy gửi các lệnh gọi riêng biệt và chờ phản hồi cho yêu cầu đầu tiên trước khi gửi yêu cầu tiếp theo.

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

Dưới đây là ví dụ về phản hồi theo lô HTTP. Thứ tự của các phản hồi có thể không khớp với thứ tự của các yêu cầu. Sử dụng Content-ID để xác định yêu cầu lồng ghép cho mỗi phản hồi lồng nhau. Trong các phản hồi, mỗi Content-ID 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--
'