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

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

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

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

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

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

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

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

  1. https://merchantapi.googleapis.com/batch/{sub-api}/v1beta को बेस यूआरएल के तौर पर इस्तेमाल करें.
  2. नेस्ट किए गए हर अनुरोध को अलग करने के लिए, कोई सीमा तय करें. उदाहरण के लिए: -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
  3. नेस्ट किए गए हर अनुरोध को बाउंड्री से अलग करें. उदाहरण के लिए, --batch_inventory.
  4. नेस्ट किए गए हर अनुरोध की शुरुआत में Content-Type: application/http शामिल करें.
  5. नेस्ट किए गए हर अनुरोध को अपने आईडी से लेबल करने के लिए, Content-ID का इस्तेमाल करें. उदाहरण के लिए: Content-ID: <get:online:en:US:123456>.
  6. नेस्ट किए गए हर अनुरोध के हेडर, पाथ, और मुख्य हिस्से के बीच एक खाली लाइन शामिल करें. अगर नेस्ट किए गए अनुरोध में कोई मुख्य हिस्सा नहीं है, तो अगली सीमा से पहले एक खाली लाइन छोड़ें.
  7. नेस्ट किए गए हर अनुरोध में बेस यूआरएल शामिल न करें.
  8. मुख्य अनुरोध को आखिरी सीमा के साथ खत्म करें, जैसे कि --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--
'

ऑर्डर करने के बारे में जानकारी

  • ऐसा हो सकता है कि अनुरोध, आपके बताए गए क्रम में लागू न हों.
  • अलग-अलग अनुरोधों की पहचान करने के लिए, Content-ID का इस्तेमाल करें.
  • अगर आपको कॉल को किसी तय क्रम में चलाना है, तो उन्हें अलग-अलग भेजें और अगला अनुरोध भेजने से पहले, पहले अनुरोध के जवाब का इंतज़ार करें.

एक साथ कई जवाब पढ़ना

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

--batch_inventory
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_inventory
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_inventory--
'