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