אפשר להשתמש בבקשות בכמות גדולה. ל-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 כדי לאחזר את המלאי האזורי של מוצר, ובקשה להוסיף מעדכנים את נתוני המלאי בחנות המקומית לאותו מוצר.
צריך לפעול בדיוק לפי הפורמט של הדוגמה:
- שימוש ב-
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--
'
אם צריך לבצע את הקריאות בסדר נתון, יש לשלוח אותן בנפרד צריך להמתין לתגובה לבקשה הראשונה לפני שליחת הבקשה הבאה.
קריאת תשובה באצווה
דוגמה לתגובה באצווה של 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--
'