إرسال طلبات متعددة في آنٍ واحد

يمكنك استخدام الطلبات المجمّعة مع واجهة برمجة التطبيقات لإرسال طلبات متعددة في طلب بيانات واحد من واجهة برمجة التطبيقات.

الطلب المجمّع هو طلب HTTP عادي واحد يحتوي على طلبات بيانات متعددة من واجهة برمجة التطبيقات، باستخدام نوع المحتوى multipart/mixed. ضمن طلب HTTP الرئيسي، يحتوي كل جزء على طلب HTTP متداخل.

يمكنك إرسال الطلب المجمّع إلى batchPath المحدّدة لواجهة برمجة التطبيقات. السمة batchPath المخصّصة للإصدار التجريبي من Merchant API هي batch/{sub-api}/v1beta . يمكنك العثور على batchPath لواجهات برمجة التطبيقات الأخرى في مستندات الاكتشاف الخاصة بها.

في ما يلي بعض الأمثلة على الحالات التي قد تريد فيها تجميع طلباتك:

  • لقد بدأت للتو في استخدام واجهة برمجة التطبيقات ولديك الكثير من البيانات لتحميلها.
  • أجرى أحد المستخدمين تغييرات على البيانات عندما كان تطبيقك غير متصل بالإنترنت، ويحتاج التطبيق إلى مزامنة البيانات المحلية مع الخادم.

إذا كانت لديك أسئلة حول تجميع HTTP أو إذا أردت طلب إمكانية إرسال طلبات مجمَّعة باستخدام مكتبات العملاء، يُرجى إرسال ملاحظات.

كتابة طلب مُجمَّع

إليك نموذج طلب مجمّع من Merchant API. يجمع هذا الطلب بين طلب الحصول على طلب استرداد المستودع الإقليمي لأحد المنتجات وطلب إدراج لتعديل المنتجات المتوفرة داخل المتجر للمنتج نفسه.

يجب أن تتبع تنسيق المثال بالضبط:

  1. استخدِم https://merchantapi.googleapis.com/batch/{sub-api}/v1beta كعنوان URL أساسي.
  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. لا تضمِّن عنوان URL الأساسي في كل طلب متداخل فردي.

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

إذا كنت بحاجة إلى تنفيذ المكالمات بترتيب معين، فأرسلها بشكل منفصل وانتظر الرد على الطلب الأول قبل إرسال الطلب التالي.

قراءة رد مُجمَّع

في ما يلي مثال على استجابة 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--
'