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

एक एपीआई कॉल में एक से ज़्यादा अनुरोध भेजने के लिए, 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, 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--
'