Вы можете использовать пакетные запросы с Merchant API для отправки нескольких запросов за один вызов API.
Пакетный запрос — это один стандартный HTTP-запрос, содержащий несколько вызовов API и использующий тип содержимого multipart/mixed
. В основном HTTP-запросе каждая часть содержит вложенный HTTP-запрос.
Вы можете отправить пакетный запрос по указанному batchPath
для API. batchPath
для бета-версии API Merchant API: batch/{sub-api}/v1beta
. Вы можете найти batchPath
для других API в их документах обнаружения .
Вот несколько примеров случаев, когда вам может потребоваться группировать запросы:
- Вы только начали использовать API и вам нужно загрузить много данных.
- Пользователь внес изменения в данные, пока ваше приложение находилось в автономном режиме, и вашему приложению необходимо синхронизировать локальные данные с сервером.
Если у вас есть вопросы по пакетной обработке HTTP или вы хотите запросить возможность отправлять пакетные запросы с помощью наших клиентских библиотек , отправьте отзыв .
Напишите пакетный запрос
Ниже приведен пример пакетного запроса 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--
'
Если вам нужно выполнить вызовы в заданном порядке, отправьте их отдельно и дождитесь ответа на первый запрос, прежде чем отправлять следующий.
Прочитать пакетный ответ
Вот пример пакетного ответа HTTP. Порядок ответов может не совпадать с порядком запросов. Используйте Content-ID
для идентификации вложенного запроса, которому принадлежит каждый вложенный ответ. В ответах каждый Content-ID
имеет префикс response-
.
--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ--
'