คุณสามารถใช้คำขอแบบกลุ่มกับ Merchant API เพื่อส่งคำขอ HTTP หลายรายการในการเรียก API ครั้งเดียว
หากต้องการทําการแยกกลุ่มด้วยไลบรารีของไคลเอ็นต์ โปรดดูปรับโค้ดใหม่สําหรับคําขอพร้อมกัน
คำขอกลุ่มคือคำขอ HTTP มาตรฐานรายการเดียวที่มีการเรียก API หลายรายการโดยใช้ประเภทเนื้อหา multipart/mixed
ภายในคำขอ HTTP หลัก แต่ละส่วนจะมีคำขอ HTTP ที่ฝังอยู่
คุณสามารถส่งคำขอแบบเป็นกลุ่มไปยัง batchPath
ที่ระบุสำหรับ API ได้ batchPath
สำหรับ Merchant API รุ่นเบต้าคือ batch/{sub-api}/v1beta
คุณดู batchPath
สำหรับ API อื่นๆ ได้ในเอกสารการค้นพบ ตัวอย่างเหตุผลที่ควรส่งคำขอเป็นกลุ่ม ได้แก่
- คุณเพิ่งเริ่มใช้ API และมีข้อมูลจำนวนมากที่จะอัปโหลด
- ผู้ใช้ทําการเปลี่ยนแปลงข้อมูลขณะที่แอปพลิเคชันออฟไลน์อยู่ และแอปพลิเคชันต้องซิงค์ข้อมูลในเครื่องกับเซิร์ฟเวอร์
เขียนคำขอแบบเป็นกลุ่ม
ตัวอย่างคำขอกลุ่ม Merchant API มีดังนี้ คำขอนี้รวมคำขอ GET เพื่อดึงข้อมูลสินค้าคงคลังในร้านของผลิตภัณฑ์ และคำขอแทรกเพื่ออัปเดตสินค้าคงคลังในร้านของผลิตภัณฑ์เดียวกัน คุณควรทำตามรูปแบบของตัวอย่างอย่างเคร่งครัด
- ใช้
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
เป็น URL พื้นฐาน - ระบุขอบเขตเพื่อแยกคําขอที่ฝังอยู่แต่ละรายการ เช่น
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
- คั่นคำขอที่ฝังอยู่แต่ละรายการด้วยขอบเขต เช่น
--batch_inventory
- ใส่
Content-Type: application/http
ที่ด้านหน้าของคําขอที่ฝังอยู่แต่ละรายการ - ใช้
Content-ID
เพื่อติดป้ายกำกับคำขอที่ฝังอยู่แต่ละรายการด้วยรหัสของคุณเอง ตัวอย่างเช่นContent-ID: <get:online:en:US:123456>
- ใส่บรรทัดว่างระหว่างส่วนหัว เส้นทาง และเนื้อหาของคําขอที่ฝังอยู่แต่ละรายการ หากคำขอที่ฝังไว้ไม่มีเนื้อหา ให้เว้นบรรทัดว่างไว้ก่อนขอบเขตถัดไป
- อย่าใส่ URL พื้นฐานในคําขอที่ฝังอยู่แต่ละรายการ
- ปิดคำขอหลักด้วยขอบเขตสุดท้าย เช่น
--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--
'
หมายเหตุเกี่ยวกับการสั่งซื้อ
- คำขออาจไม่ดำเนินการตามลำดับที่คุณระบุ
- ใช้
Content-ID
เพื่อระบุคำขอแต่ละรายการ - หากต้องการเรียกใช้ตามลําดับที่ระบุ ให้ส่งคำขอแยกต่างหากและรอการตอบกลับคําขอแรกก่อนส่งคําขอถัดไป
อ่านการตอบกลับแบบเป็นกลุ่ม
ต่อไปนี้คือตัวอย่างการตอบกลับ HTTP แบบเป็นกลุ่ม ลําดับของคําตอบอาจไม่ตรงกับลําดับของคําขอ ใช้ Content-ID
เพื่อระบุคำขอที่ฝังอยู่ซึ่งคำตอบที่ฝังอยู่แต่ละรายการเป็นของคำขอนั้น ในการตอบกลับ API จะเพิ่มส่วนนำหน้า response-
ให้กับ 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--
'