میتوانید از درخواستهای دستهای با Merchant API برای ارسال چندین درخواست HTTP در یک تماس API استفاده کنید.
اگر ترجیح می دهید دسته بندی با کتابخانه های سرویس گیرنده انجام دهید، برای درخواست های همزمان به کد Refactor مراجعه کنید.
درخواست دسته ای یک درخواست استاندارد HTTP است که حاوی چندین تماس API است که از نوع محتوای multipart/mixed
استفاده می کند. در درخواست اصلی HTTP، هر بخش حاوی یک درخواست HTTP تو در تو است.
می توانید درخواست دسته ای را به batchPath
مشخص شده برای API ارسال کنید. batchPath
برای Merchant API بتای batch/{sub-api}/v1beta
است. میتوانید batchPath
برای سایر APIها در اسناد کشف آنها بیابید. نمونه هایی از دلایل دسته بندی درخواست های شما عبارتند از:
- شما به تازگی شروع به استفاده از API کرده اید و داده های زیادی برای آپلود دارید.
- زمانی که برنامه شما آفلاین بود، کاربر تغییراتی در دادهها ایجاد کرد و برنامه شما باید دادههای محلی را با سرور همگامسازی کند.
ارسال چندین درخواست به صورت موازی مانع از انتظار شما برای کندترین درخواست فرعی می شود که زمان پاسخ سرور را بهبود می بخشد و تاخیر را کاهش می دهد.
یک درخواست دسته ای بنویسید
در اینجا یک نمونه درخواست دسته ای 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
استفاده کنید. در پاسخ ها، API یک پیشوند 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--
'