Enviar várias solicitações de uma vez

É possível usar 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 contendo várias chamadas de API. usando o tipo de conteúdo multipart/mixed. Na solicitação HTTP principal, cada part contém uma solicitação HTTP aninhada.

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

Aqui estão alguns exemplos de situações em que convém agrupar suas solicitações em lote:

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

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

Criar uma solicitação em lote

Este é 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.

Você deve seguir exatamente o formato do exemplo:

  1. Usar https://merchantapi.googleapis.com/batch/{sub-api}/v1beta como base URL.
  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 anúncio aninhado solicitação.

  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. Incluir uma linha em branco entre o cabeçalho, o caminho e o corpo de cada palavra aninhada solicitação. Se a solicitação aninhada não tiver um 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. Encerrar 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 uma resposta HTTP em lote. A ordem das respostas pode não correspondem à ordem das solicitações. Use o Content-ID para identificar os elementos solicitação de cada resposta aninhada pertence. Nas respostas, cada Content-ID é com 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--
'