שליחת כמה בקשות בבת אחת

ב-Merchant API אפשר להשתמש בבקשות לאצוות כדי לשלוח כמה בקשות בקריאה אחת ל-API.

בקשה באצווה היא בקשת HTTP רגילה יחידה שמכילה מספר קריאות ל-API, באמצעות סוג התוכן multipart/mixed. בבקשת ה-HTTP הראשית, כל חלק מכיל בקשת HTTP מקוננת.

אפשר לשלוח את הבקשה באצווה ל-batchPath שצוין עבור ה-API. הערך batchPath בגרסת הבטא של Merchant API הוא batch/{sub-api}/v1beta . ניתן למצוא את batchPath לממשקי API אחרים במסמכי הגילוי שלהם.

הנה כמה דוגמאות למקרים שבהם כדאי לקבץ את הבקשות:

  • התחלתם להשתמש ב-API ויש לכם הרבה נתונים להעלאה.
  • משתמש ביצע שינויים בנתונים בזמן שהאפליקציה הייתה במצב אופליין, והאפליקציה שלכם צריכה לסנכרן את הנתונים המקומיים עם השרת.

אם יש לכם שאלות לגבי קיבוץ HTTP, או אם אתם רוצים לשלוח בקשות באצווה באמצעות ספריות הלקוח שלנו, שלחו משוב.

כתיבת בקשה באצווה

הנה דוגמה של בקשת אצווה של 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--
'

אם אתם צריכים לבצע שיחות בסדר מסוים, תוכלו לשלוח אותן בנפרד ולהמתין לתשובה לבקשה הראשונה, לפני שליחת הבקשה הבאה.

קריאת תשובות בכמות גדולה

זוהי דוגמה לתגובת HTTP באצווה. ייתכן שסדר התשובות לא יהיה תואם לסדר הבקשות. משתמשים ב-Content-ID כדי לזהות את הבקשה המקוננת שאליה שייכת כל תגובה שמופיעה בתוך רכיב. בתשובות, לכל Content-ID יש קידומת של response-.

--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ--
'