Enviar várias solicitações de uma vez

Use solicitações em lote com a API Merchant para enviar várias solicitações em uma única chamada de API.

Uma solicitação em lote é uma única solicitação HTTP padrão que contém várias chamadas de API usando o tipo de conteúdo multipart/mixed. Na solicitação HTTP principal, cada parte contém uma solicitação HTTP aninhada.

É possível enviar a solicitação em lote ao batchPath especificado para a API. O batchPath da API Merchant Beta é batch/{sub-api}/v1beta . É possível encontrar o batchPath de outras APIs nos documentos de descoberta.

Veja alguns exemplos de situações em que convém agrupar suas solicitações:

  • Você acabou de começar a usar a API e tem muitos dados para fazer upload.
  • Um usuário fez alterações nos dados enquanto o app estava off-line, e o app precisa sincronizar os dados locais com o servidor.

Se você tiver dúvidas sobre lotes HTTP ou quiser solicitar a capacidade de enviar solicitações em lote com nossas bibliotecas de cliente, envie feedback.

Escrever uma solicitação em lote

Veja um exemplo de solicitação em lote da API Merchant. Essa solicitação combina uma solicitação get para recuperar o inventário regional de um produto e uma solicitação de inserção para atualizar o inventário local do mesmo produto.

Siga exatamente o formato do exemplo:

  1. Use https://merchantapi.googleapis.com/batch/{sub-api}/v1beta como o URL base.
  2. Especifique um limite para separar cada solicitação aninhada, por exemplo:

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

  3. Separe cada solicitação aninhada com o limite, por exemplo, --batch_inventory.

  4. Inclua Content-Type: application/http no início de cada solicitação aninhada.

  5. (Opcional) Use Content-ID para rotular cada solicitação aninhada com seu próprio ID. Exemplo:

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

  6. Inclua uma linha em branco entre o cabeçalho, o caminho e o corpo de cada solicitação aninhada. Se a solicitação aninhada não tiver corpo, deixe uma linha em branco antes do próximo limite.

  7. Não inclua o URL de base em cada solicitação aninhada individual.

  8. Encerre a solicitação principal com um limite final, por exemplo, --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--
'

Se você precisar executar suas chamadas em uma determinada ordem, envie-as separadamente e aguarde a resposta da primeira solicitação antes de enviar a próxima.

Ler uma resposta em lote

Veja um exemplo de resposta HTTP em lote. A ordem das respostas pode não corresponder à ordem das solicitações. Use o Content-ID para identificar a solicitação aninhada a que cada resposta aninhada pertence. Nas respostas, cada Content-ID tem o prefixo 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--
'