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

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

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