אתם יכולים להשתמש בבקשות באצווה עם 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 <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/v1/accounts/123/products/online:en:US:123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>
POST /inventories/v1/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~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--
'