ส่งคำขอหลายรายการพร้อมกัน

คุณสามารถใช้คำขอแบบกลุ่มกับ 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 เพื่ออัปเดตสินค้าคงคลังระดับภูมิภาคสำหรับผลิตภัณฑ์เดียวกัน คุณควรทำตามรูปแบบของตัวอย่างทุกประการ ดังนี้

  1. ใช้ https://merchantapi.googleapis.com/batch/{sub-api}/v1 เป็น URL ฐาน
  2. ระบุขอบเขตเพื่อแยกคำขอที่ฝังแต่ละรายการ เช่น -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
  3. แยกคำขอที่ฝังแต่ละรายการด้วยขอบเขต เช่น --batch_inventory
  4. ใส่ Content-Type: application/http ที่จุดเริ่มต้นของคำขอที่ฝังแต่ละรายการ
  5. ใช้ Content-ID เพื่อติดป้ายกำกับคำขอที่ฝังแต่ละรายการด้วยรหัสของคุณเอง ตัวอย่างเช่น Content-ID: <get~en~US~123456>
  6. ใส่บรรทัดว่างระหว่างส่วนหัว เส้นทาง และเนื้อหาของคำขอที่ซ้อนกันแต่ละรายการ หากคำขอที่ซ้อนกันไม่มีเนื้อหา ให้เว้นบรรทัดว่างไว้ก่อนขอบเขตถัดไป
  7. อย่าใส่ URL ฐานในคำขอที่ฝังอยู่แต่ละรายการ
  8. สิ้นสุดคำขอหลักด้วยขอบเขตสุดท้าย เช่น --batch_inventory–
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get~en~US~123456>

GET /inventories/v1/accounts/123/products/en~US~123456/regionalInventories

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

POST /inventories/v1/accounts/123/products/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--

จำกัดสูงสุด

คำขอแบบกลุ่มมีขีดจำกัดต่อไปนี้

  • คำขอที่ซ้อนกัน 2,000 รายการต่อคำขอแบบกลุ่ม

หากคำขอแบบกลุ่มเกินขีดจำกัดเหล่านี้ API จะแสดงข้อผิดพลาด 400 Bad Request และปฏิเสธคำขอทั้งหมด