Bạn có thể sử dụng yêu cầu hàng loạt với Merchant API để gửi nhiều yêu cầu HTTP trong một lệnh gọi API.
Nếu bạn muốn thực hiện tính năng tạo hàng loạt bằng thư viện ứng dụng, hãy xem phần Cấu trúc lại mã cho các yêu cầu đồng thời.
Yêu cầu theo lô là một yêu cầu HTTP chuẩn duy nhất 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
đã chỉ định cho API. batchPath
cho Merchant API beta 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 các API đó. Sau đây là một số ví dụ về lý do bạn nên gửi yêu cầu theo lô:
- Bạn mới bắt đầu sử dụng API và có nhiều dữ liệu cần tải lên.
- Người dùng đã thay đổi dữ liệu khi ứng dụng của bạn đang ở 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ủ.
Viết yêu cầu hàng loạt
Dưới đây là một yêu cầu hàng loạt mẫu của Merchant API. Yêu cầu này kết hợp một yêu cầu get để truy xuất kho hàng theo 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 theo khu vực của cùng một sản phẩm. Bạn nên tuân thủ định dạng của ví dụ một cách chính xác:
- Sử dụng
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
làm URL cơ sở. - 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' \
- Phân tách từng yêu cầu lồng nhau bằng ranh giới, ví dụ:
--batch_inventory
. - Thêm
Content-Type: application/http
vào đầu mỗi yêu cầu lồng nhau. - Sử dụng
Content-ID
để gắn nhãn cho 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>
. - Thê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 được lồng. Nếu yêu cầu lồng nhau không có nội dung, hãy để một dòng trống trước ranh giới tiếp theo.
- Không đưa URL cơ sở vào từng yêu cầu lồng nhau.
- Kết thúc yêu cầu chính bằng một 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--
'
Lưu ý về việc đặt hàng
- Các yêu cầu có thể không thực thi theo thứ tự bạn chỉ định.
- Sử dụng
Content-ID
để xác định từng yêu cầu. - 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à đợi 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
Sau đây là ví dụ về phản hồi HTTP theo lô. 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 nhau thuộc về mỗi phản hồi lồng nhau. Trong các phản hồi, API sẽ thêm tiền tố response-
vào mỗi Content-ID
.
--batch_inventory
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_inventory
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_inventory--
'