Отправьте несколько запросов одновременно

Вы можете использовать пакетные запросы с Merchant API для отправки нескольких HTTP-запросов за один вызов API.

Если вы предпочитаете выполнять пакетную обработку с помощью клиентских библиотек , см. раздел Рефакторинг кода для параллельных запросов .

Пакетный запрос — это один стандартный HTTP-запрос, содержащий несколько вызовов API и использующий тип содержимого multipart/mixed . В основном HTTP-запросе каждая часть содержит вложенный HTTP-запрос.

Вы можете отправить пакетный запрос по указанному batchPath для API. batchPath для бета-версии API Merchant API: batch/{sub-api}/v1beta . Вы можете найти batchPath для других API в их документах обнаружения . Примеры причин группировать запросы:

  • Вы только начали использовать API и вам нужно загрузить много данных.
  • Пользователь внес изменения в данные, пока ваше приложение находилось в автономном режиме, и вашему приложению необходимо синхронизировать локальные данные с сервером.

Напишите пакетный запрос

Ниже приведен пример пакетного запроса 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--
'

Примечания к заказу

  • Запросы могут выполняться не в том порядке, в котором вы их указываете.
  • Используйте 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--
'