एक साथ कई अनुरोध भेजना

Merchant API के साथ बैच रिक्वेस्ट का इस्तेमाल करके, एक ही एपीआई कॉल में कई एचटीटीपी अनुरोध भेजे जा सकते हैं.

अगर आपको क्लाइंट लाइब्रेरी की मदद से बैच बनाना है, तो एक साथ कई अनुरोध भेजने के लिए कोड को फिर से व्यवस्थित करना लेख पढ़ें.

बैच अनुरोध, एक स्टैंडर्ड एचटीटीपी अनुरोध होता है. इसमें multipart/mixed कॉन्टेंट-टाइप का इस्तेमाल करके, कई एपीआई कॉल शामिल किए जाते हैं. मुख्य एचटीटीपी अनुरोध के हर हिस्से में, एक नेस्ट किया गया एचटीटीपी अनुरोध होता है.

एपीआई के लिए, बैच अनुरोध को बताए गए batchPath पर भेजा जा सकता है. Merchant API के लिए batchPath, batch/{sub-api}/v1 है. अन्य एपीआई के लिए batchPath को उनके खोज से जुड़े दस्तावेज़ों में देखा जा सकता है.

अनुरोधों का बैच बनाने की वजहों के उदाहरणों में ये शामिल हैं:

  • आपने अभी-अभी एपीआई का इस्तेमाल करना शुरू किया है और आपके पास अपलोड करने के लिए बहुत सारा डेटा है.
  • जब आपका ऐप्लिकेशन ऑफ़लाइन था, तब किसी उपयोगकर्ता ने डेटा में बदलाव किए. अब आपके ऐप्लिकेशन को स्थानीय डेटा को सर्वर के साथ सिंक करना होगा.

एक साथ कई अनुरोध भेजने से, आपको सबसे धीमे सब-अनुरोध के लिए इंतज़ार नहीं करना पड़ता. इससे सर्वर के रिस्पॉन्स टाइम में सुधार होता है और इंतज़ार का समय कम होता है.

एक साथ कई अनुरोध लिखना

यहां Merchant API के बैच अनुरोध का एक सैंपल दिया गया है. इस अनुरोध में, किसी प्रॉडक्ट की रीजनल इन्वेंट्री को वापस पाने के लिए, get अनुरोध और उसी प्रॉडक्ट की रीजनल इन्वेंट्री को अपडेट करने के लिए, insert अनुरोध को जोड़ा जाता है. आपको उदाहरण में दिए गए फ़ॉर्मैट का ही इस्तेमाल करना चाहिए:

  1. बेस यूआरएल के तौर पर https://merchantapi.googleapis.com/batch/{sub-api}/v1 का इस्तेमाल करें.
  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. हर नेस्ट किए गए अनुरोध में बेस यूआरएल शामिल न करें.
  8. मुख्य अनुरोध को आखिरी बाउंड्री के साथ खत्म करें. उदाहरण के लिए, --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 का इस्तेमाल करें.
  • अगर आपको अपने कॉल किसी खास क्रम में चलाने हैं, तो उन्हें अलग-अलग भेजें. साथ ही, अगला अनुरोध भेजने से पहले, पहले अनुरोध के जवाब का इंतज़ार करें.

बैच रिस्पॉन्स पढ़ना

यहां एचटीटीपी बैच रिस्पॉन्स का एक उदाहरण दिया गया है. ऐसा हो सकता है कि जवाबों का क्रम, अनुरोधों के क्रम से मेल न खाए. Content-ID का इस्तेमाल करके, यह पहचान करें कि नेस्ट किया गया हर रिस्पॉन्स, नेस्ट किए गए किस अनुरोध से जुड़ा है. एपीआई, जवाबों में हर Content-ID के लिए response- प्रीफ़िक्स जोड़ता है.

--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 नेस्ट किए गए अनुरोध.

अगर कोई बैच अनुरोध इनमें से किसी भी सीमा को पार करता है, तो एपीआई 400 Bad Request गड़बड़ी दिखाता है और पूरे अनुरोध को अस्वीकार कर देता है.