Invia più richieste contemporaneamente

Puoi utilizzare le richieste in 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, usando il tipo di contenuti multipart/mixed. All'interno della richiesta HTTP principale, contiene una richiesta HTTP nidificata.

Puoi inviare la richiesta batch all'elemento batchPath specificato per l'API. La batchPath per la versione beta dell'API Merchant è batch/{sub-api}/v1beta . Puoi visualizzare batchPath per altre API durante la sua scoperta documenti.

Ecco alcuni esempi di volte in cui potresti voler eseguire un batch delle tue richieste:

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

Se hai domande sulla creazione di batch HTTP o se vuoi richiedere la funzionalità di inviare richieste in batch al nostro client biblioteche, invia Feedback.

Scrivi una richiesta batch

Ecco un esempio di richiesta batch dell'API Merchant. Questa richiesta combina una richiesta get per recuperare l'inventario regionale di un prodotto e una richiesta di inserimento 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 base URL.
  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 elemento nidificato richiesta.

  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. Se la richiesta nidificata non ha un corpo, lascia una riga vuota prima del confine 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–.

di Gemini Advanced.
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 attendere la risposta alla prima richiesta prima di inviare quella successiva.

Lettura di una risposta batch

Ecco un esempio di risposta batch HTTP. L'ordine delle risposte potrebbe non corrispondono all'ordine delle richieste. Utilizza Content-ID per identificare gli elementi nidificati a cui appartiene ogni risposta nidificata. Nelle risposte, ogni Content-ID è con 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--
'