אפשר להשתמש בבקשות באצווה עם Merchant API כדי לשלוח כמה בקשות HTTP בקריאה אחת ל-API.
אם אתם מעדיפים לבצע קיבוץ באמצעות ספריות לקוח, כדאי לעיין במאמר שינוי קוד לבקשות בו-זמניות.
בקשה באצווה היא בקשת HTTP רגילה אחת שמכילה מספר קריאות ל-API, באמצעות סוג התוכן multipart/mixed
. בבקשת ה-HTTP הראשית, כל חלק מכיל בתוכו בקשת HTTP פנימית.
אפשר לשלוח את הבקשה באצווה אל ה-batchPath
שצוין ל-API. הערך של batchPath
בגרסת הבטא של Merchant API הוא batch/{sub-api}/v1beta
. אפשר למצוא את הערך של batchPath
לממשקי API אחרים במסמכי הגילוי שלהם. דוגמאות לסיבות ליצירת קבוצות של בקשות:
- רק התחלתם להשתמש ב-API ויש לכם הרבה נתונים להעלות.
- משתמש ביצע שינויים בנתונים בזמן שהאפליקציה הייתה במצב אופליין, והאפליקציה צריכה לסנכרן את הנתונים המקומיים עם השרת.
שליחת כמה בקשות בו-זמנית מונעת את ההמתנה לבקשת המשנה האיטית ביותר, וכך משפרת את זמני התגובה של השרת ומקצרת את זמן האחזור.
כתיבת בקשה באצווה
לפניכם דוגמה לבקשת אצווה של Merchant API. הבקשה הזו משלבת בקשת אחזור כדי לאחזר את המלאי האזורי של מוצר, ובקשת הטמעה כדי לעדכן את המלאי האזורי של אותו מוצר. צריך לפעול לפי הפורמט של הדוגמה בדיוק:
- משתמשים ב-
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
ככתובת ה-URL הבסיסית. - מציינים גבול כדי להפריד בין כל בקשה בתצוגת עץ, לדוגמה:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
- מפרידים כל בקשה בתצוגת עץ באמצעות הגבול, לדוגמה
--batch_inventory
. - מוסיפים את
Content-Type: application/http
בתחילת כל בקשה בתצוגת עץ. - משתמשים ב-
Content-ID
כדי לתייג כל בקשה בתצוגת עץ במזהה משלכם. לדוגמה:Content-ID: <get:online:en:US:123456>
. - מוסיפים שורה ריקה בין הכותרת, הנתיב והגוף של כל בקשה בתצוגת עץ. אם לבקשת העץ אין גוף, משאירים שורה ריקה לפני הגבול הבא.
- אל תכללו את כתובת ה-URL הבסיסית בכל בקשה פנימית בנפרד.
- צריך לסיים את הבקשה הראשית בגבול סופי, לדוגמה
--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--
'