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

אפשר להשתמש בבקשות בכמות גדולה. ל-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--
'