ارسال چندین درخواست به‌طور هم‌زمان

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

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

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

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

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

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

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

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

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

  1. از https://merchantapi.googleapis.com/batch/{sub-api}/v1 به‌عنوان نشانی وب پایه استفاده کنید.
  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 {ACCESS_TOKEN}' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get~en~US~123456>

GET /inventories/v1/accounts/123/products/en~US~123456/regionalInventories

--batch_inventory
Content-Type: application/http
Content-ID: <post~en~US~123456>

POST /inventories/v1/accounts/123/products/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--

محدودیت‌ها

درخواست‌های دسته‌ای محدودیت‌های زیر را دارند:

  • ۲۰۰۰ درخواست تودرتو در هر درخواست دسته‌ای.

اگر درخواست دسته‌ای از هرکدام از این محدودیت‌ها فراتر برود، API خطای 400 Bad Request برمی‌گرداند و کل درخواست را رد می‌کند.