يمكنك استخدام الطلبات المجمّعة مع Merchant API لإرسال طلبات HTTP متعددة في طلب واحد من واجهة برمجة التطبيقات.
إذا كنت تفضّل إجراء التجميع باستخدام مكتبات العميل، اطّلِع على مقالة إعادة صياغة الرمز البرمجي للطلبات المتزامنة.
الطلب المجمّع هو طلب HTTP عادي واحد يحتوي على طلبات متعددة للحصول على البيانات من واجهة برمجة التطبيقات، ويستخدم نوع المحتوى multipart/mixed
. ضمن طلب HTTP الرئيسي، يحتوي كل
جزء على طلب HTTP متداخل.
يمكنك إرسال الطلب المجمّع إلى batchPath
المحدّد لواجهة برمجة التطبيقات. batchPath
الإصدار التجريبي من Merchant API هو batch/{sub-api}/v1beta
. يمكنك العثور على
batchPath
لواجهات برمجة التطبيقات الأخرى في مستندات الاكتشاف. تشمل أمثلة أسباب تجميع
الطلبات ما يلي:
- إذا كنت قد بدأت للتو استخدام واجهة برمجة التطبيقات ولديك الكثير من البيانات المطلوب تحميلها
- أجرى مستخدم تغييرات على البيانات عندما كان تطبيقك بلا اتصال بالإنترنت، ويجب أن تتم مزامنة البيانات المحلية مع الخادم في تطبيقك.
يمنع منك إرسال طلبات متعدّدة بالتوازي الانتظار إلى أن يتم إكمال الطلب الفرعي الأبطأ، ما يؤدي إلى تحسين أوقات استجابة الخادم وخفض وقت الاستجابة.
كتابة طلب مجمّع
في ما يلي نموذج لطلب مجمّع في Merchant API. يجمع هذا الطلب بين طلب الحصول على المستودع الإقليمي لمنتج معيّن وطلب الإدراج لتعديل المستودع الإقليمي للمنتج نفسه. يجب اتّباع تنسيق المثال بالضبط:
- استخدِم
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
كعنوان URL أساسي. - حدِّد حدًا لفصل كل طلب مُدمَج، على سبيل المثال:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
- افصل بين كل طلب مُدمَج باستخدام الحدّ، على سبيل المثال
--batch_inventory
. - أدرِج
Content-Type: application/http
في بداية كل طلب مُدمَج. - استخدِم
Content-ID
لتصنيف كل طلب مُدمَج بمعرّفك الخاص. على سبيل المثال:Content-ID: <get:online:en:US:123456>
. - أدرِج سطرًا فارغًا بين العنوان والمسار والنص الرئيسي لكل طلب مُدمَج. إذا لم يتضمّن الطلب المُدمَج نصًا، اترك سطرًا فارغًا قبل الحدّ التالي.
- لا تُدرِج عنوان URL الأساسي في كل طلب فردي متداخل.
- اختَتم الطلب الرئيسي بحدود نهائية، مثل
--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
لتحديد الطلبات الفردية. - إذا كنت بحاجة إلى تنفيذ طلباتك بترتيب معيّن، أرسِلها بشكل منفصل وانتظر الردّ على الطلب الأول قبل إرسال الطلب التالي.
قراءة ردّ مجمّع
في ما يلي مثال على استجابة دفعة HTTP. قد
لا يتطابق ترتيب الردود مع ترتيب الطلبات. استخدِم Content-ID
لتحديد
الطلب الذي ينتمي إليه كلّ ردّ مضمّن. في الردود، تضيف واجهة برمجة التطبيقات بادئة
response-
إلى كل Content-ID
.
--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--
'