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

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

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