Envía varias solicitudes a la vez

Puedes usar solicitudes por lotes con la API de Merchant Center para enviar varias solicitudes en una sola llamada a la API.

Una solicitud por lotes es una solicitud HTTP estándar que contiene varias llamadas a la API. con el tipo de contenido multipart/mixed. Dentro de la solicitud HTTP principal, cada contiene una solicitud HTTP anidada.

Puedes enviar la solicitud por lotes al batchPath especificado para la API. El batchPath para la versión beta de la API de Merchant Center es batch/{sub-api}/v1beta . Puedes encontrar la batchPath para otras APIs en su descubrimiento documentos.

Estos son algunos ejemplos de las ocasiones en las que podrías querer agrupar tus solicitudes por lotes:

  • Acabas de empezar a usar la API y tienes muchos datos para subir.
  • Un usuario realizó cambios en datos mientras la aplicación estaba sin conexión y tu necesita sincronizar datos locales con el servidor.

Si tienes preguntas sobre el procesamiento por lotes HTTP o quieres solicitar la capacidad para enviar solicitudes por lotes con nuestro cliente bibliotecas, enviar comentarios.

Escribe una solicitud por lotes

Este es un ejemplo de una solicitud por lotes a la API de Merchant Center. Esta solicitud combina una solicitud GET para recuperar el inventario regional de un producto y una solicitud de inserción para actualizar el inventario local del mismo producto

Debes seguir exactamente el formato del ejemplo:

  1. Usa https://merchantapi.googleapis.com/batch/{sub-api}/v1beta como base. URL.
  2. Especifica un límite para separar cada solicitud anidada, por ejemplo:

    -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \

  3. Separa cada solicitud anidada con el límite, por ejemplo --batch_inventory

  4. Incluye Content-Type: application/http al comienzo de cada elemento anidado. para cada solicitud.

  5. Usa Content-ID para etiquetar cada solicitud anidada con tu propio ID (opcional). Por ejemplo:

    Content-ID: <get:online:en:US:123456>.

  6. Incluir una línea en blanco entre el encabezado, la ruta de acceso y el cuerpo de cada elemento anidado para cada solicitud. Si la solicitud anidada no tiene un cuerpo, deja una línea en blanco. antes del siguiente límite.

  7. No incluyas la URL base en cada solicitud anidada individual.

  8. Finaliza la solicitud principal con un límite final, por ejemplo --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--
'

Si necesitas ejecutar las llamadas en un orden determinado, envíalas por separado y esperar la respuesta a la primera solicitud antes de enviar la siguiente.

Lee una respuesta por lotes

Este es un ejemplo de una respuesta por lotes HTTP. El orden de las respuestas puede no coinciden con el orden de las solicitudes. Usa Content-ID para identificar las propiedades anidadas solicitud a la que pertenece cada respuesta anidada. En las respuestas, cada Content-ID es con el prefijo 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--
'