چندین درخواست را همزمان ارسال کنید

شما می‌توانید از درخواست‌های دسته‌ای با Merchant API برای ارسال چندین درخواست HTTP در یک فراخوانی API واحد استفاده کنید.

اگر ترجیح می‌دهید دسته‌بندی را با کتابخانه‌های کلاینت انجام دهید، برای درخواست‌های همزمان به کد اصلاح‌شده مراجعه کنید.

یک درخواست دسته‌ای، یک درخواست HTTP استاندارد واحد است که شامل چندین فراخوانی API است و از نوع محتوای multipart/mixed استفاده می‌کند. در درخواست HTTP اصلی، هر بخش شامل یک درخواست HTTP تو در تو است.

شما می‌توانید درخواست دسته‌ای را به batchPath مشخص شده برای API ارسال کنید. batchPath برای Merchant API batch/{sub-api}/v1 است. می‌توانید batchPath را برای سایر APIها در اسناد کشف آنها پیدا کنید.

نمونه‌هایی از دلایل دسته بندی درخواست‌های شما عبارتند از:

  • شما تازه شروع به استفاده از API کرده‌اید و داده‌های زیادی برای آپلود دارید.
  • یک کاربر در حالی که برنامه شما آفلاین بوده، تغییراتی در داده‌ها ایجاد کرده است و برنامه شما نیاز دارد داده‌های محلی را با سرور همگام‌سازی کند.

ارسال چندین درخواست به صورت موازی، مانع از انتظار شما برای کندترین زیردرخواست می‌شود که این امر زمان پاسخگویی سرور را بهبود می‌بخشد و تأخیر را کاهش می‌دهد.

درخواست دسته‌ای بنویسید

در اینجا یک نمونه درخواست دسته‌ای از Merchant API آورده شده است. این درخواست ترکیبی از یک درخواست get برای بازیابی موجودی منطقه‌ای یک محصول و یک درخواست insert برای به‌روزرسانی موجودی منطقه‌ای همان محصول است. شما باید دقیقاً از قالب مثال پیروی کنید:

  1. https://merchantapi.googleapis.com/batch/{sub-api}/v1 به عنوان URL پایه استفاده کنید.
  2. برای جدا کردن هر درخواست تو در تو، یک مرز مشخص کنید، برای مثال: -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
  3. هر درخواست تو در تو را با مرز مشخص شده، مثلاً --batch_inventory از هم جدا کنید.
  4. در ابتدای هر درخواست تو در تو، Content-Type: application/http را قرار دهید.
  5. Content-ID برای برچسب‌گذاری هر درخواست تو در تو با شناسه خودتان استفاده کنید. برای مثال: Content-ID: <get~en~US~123456> .
  6. بین هدر، مسیر و بدنه هر درخواست تو در تو، یک خط خالی قرار دهید. اگر درخواست تو در تو بدنه ندارد، قبل از مرز بعدی یک خط خالی بگذارید.
  7. آدرس اینترنتی پایه را در هر درخواست تو در تو و جداگانه وارد نکنید.
  8. درخواست اصلی را با یک مرز نهایی، مثلاً --batch_inventory– پایان دهید.
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-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/v1/accounts/123/products/online:en:US:123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>
POST /inventories/v1/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~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~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/en~US~123456/regionalInventories/123456",
  "region": "123456",
  "price": {
    "amountMicros": "100000000",
    "currencyCode": "USD"
  }
}
--batch_inventory--
'