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