Invia più richieste contemporaneamente

Puoi utilizzare le richieste batch con l'API Merchant per inviare più richieste in una singola chiamata API.

Una richiesta batch è una singola richiesta HTTP standard contenente più chiamate API, che utilizza il tipo di contenuti multipart/mixed. All'interno della richiesta HTTP principale, ogni parte contiene una richiesta HTTP nidificata.

Puoi inviare la richiesta batch al batchPath specificato per l'API. Il batchPath per la versione beta dell'API Merchant è batch/{sub-api}/v1beta . Puoi trovare batchPath per altre API nei loro documenti di rilevamento.

Ecco alcuni esempi di casi in cui potresti voler raggruppare le richieste:

  • Hai appena iniziato a utilizzare l'API e hai molti dati da caricare.
  • Un utente ha apportato modifiche ai dati mentre l'applicazione era offline, pertanto l'applicazione deve sincronizzare i dati locali con il server.

Per eventuali domande sui batch HTTP o se vuoi richiedere la possibilità di inviare richieste batch con le nostre librerie client, invia un feedback.

Scrivi una richiesta batch

Ecco un esempio di richiesta batch dell'API Merchant. Questa richiesta combina una richiesta di get per recuperare l'inventario regionale per un prodotto e una richiesta di inserimento per aggiornare l'inventario locale per lo stesso prodotto.

Devi seguire esattamente il formato dell'esempio:

  1. Usa https://merchantapi.googleapis.com/batch/{sub-api}/v1beta come URL di base.
  2. Specifica un confine per separare ogni richiesta nidificata, ad esempio:

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

  3. Separa ogni richiesta nidificata con il confine, ad esempio --batch_inventory.

  4. Includi Content-Type: application/http all'inizio di ogni richiesta nidificata.

  5. (Facoltativo) Utilizza Content-ID per etichettare ogni richiesta nidificata con il tuo ID. Ad esempio:

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

  6. Includi una riga vuota tra l'intestazione, il percorso e il corpo di ogni richiesta nidificata. Se la richiesta nidificata non ha un corpo, lascia una riga vuota prima del limite successivo.

  7. Non includere l'URL di base in ogni singola richiesta nidificata.

  8. Termina la richiesta principale con un confine finale, ad esempio --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 devi eseguire le chiamate in un determinato ordine, inviale separatamente e attendi la risposta alla prima richiesta prima di inviare quella successiva.

Lettura di una risposta batch

Di seguito è riportato un esempio di risposta batch HTTP. L'ordine delle risposte potrebbe non corrispondere all'ordine delle richieste. Usa Content-ID per identificare la richiesta nidificata a cui appartiene ogni risposta nidificata. Nelle risposte, ogni Content-ID ha il prefisso 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--
'