Una richiesta batch è una singola richiesta HTTP standard contenente più chiamate API,
che utilizza il tipo di contenuto multipart/mixed. All'interno della richiesta HTTP principale, ciascuna parte contiene una richiesta HTTP nidificata.
Puoi inviare la richiesta batch all'batchPath specificato per l'API. L'batchPath per l'API Merchant è batch/{sub-api}/v1. Puoi trovare
batchPath per altre API nei relativi documenti
di rilevamento.
Ecco alcuni motivi per raggruppare le 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 la tua
applicazione deve sincronizzare i dati locali con il server.
L'invio di più richieste in parallelo ti impedisce di attendere la richiesta secondaria più lenta, il che migliora i tempi di risposta del server e riduce la latenza.
Scrivere una richiesta batch
Ecco una richiesta batch di esempio dell'API Merchant. Questa richiesta combina una richiesta GET
per recuperare l'inventario regionale di un prodotto e una richiesta INSERT per
aggiornare l'inventario regionale dello stesso prodotto. Devi seguire esattamente il formato
dell'esempio:
Utilizza https://merchantapi.googleapis.com/batch/{sub-api}/v1 come URL di base.
Specifica un limite per separare ogni richiesta nidificata, ad esempio: -H
'Content-Type: multipart/mixed,boundary=batch_inventory' \
Separa ogni richiesta nidificata con il limite, ad esempio
--batch_inventory.
Includi Content-Type: application/http all'inizio di ogni richiesta
nidificata.
Utilizza Content-ID per etichettare ogni richiesta nidificata con il tuo ID. Ad esempio:
Content-ID: <get~en~US~123456>.
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.
Non includere l'URL di base in ogni singola richiesta nidificata.
Termina la richiesta principale con un limite finale, ad esempio
--batch_inventory–.
Le richieste potrebbero non essere eseguite nell'ordine specificato.
Utilizza Content-ID per identificare le singole richieste.
Se devi eseguire le chiamate in un determinato ordine, inviale separatamente e
attendi la risposta alla prima richiesta prima di inviare la successiva.
Leggere una risposta batch
Di seguito è riportato un esempio di risposta batch HTTP. L'ordine delle risposte potrebbe
non corrispondere all'ordine delle richieste. Utilizza Content-ID per identificare la richiesta
nidificata a cui appartiene ogni risposta nidificata. Nelle risposte, l'API aggiunge un prefisso response- a ogni Content-ID.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-08-26 UTC."],[[["\u003cp\u003eThe Shopping Content API allows batch requests with multiple entries of different methods (insert, update, delete, custom) within a single request, while the Merchant API requires separate, parallel requests for similar functionality.\u003c/p\u003e\n"],["\u003cp\u003eWhen using client libraries, the Shopping Content API offers a \u003ccode\u003ecustombatch\u003c/code\u003e method, whereas the Merchant API utilizes individual API calls that can be executed concurrently using \u003ccode\u003eApiFuture\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor scenarios without client libraries, batching in the Shopping Content API involves a single POST request to a specific batch endpoint with an "entries" array, while the Merchant API uses multipart/mixed requests to combine multiple operations.\u003c/p\u003e\n"]]],[],null,["You can use [batch requests](//cloud.google.com/compute/docs/api/how-tos/batch)\nwith the Merchant API to send multiple HTTP requests in a single API call.\n\nIf you prefer to perform batching with [client\nlibraries](/merchant/api/client-libraries), see [Refactor code for concurrent\nrequests](/merchant/api/guides/compatibility/refactor-concurrent-requests).\n\nA batch request is a single standard HTTP request containing multiple API calls,\nusing the `multipart/mixed` content type. Within the main HTTP request, each\npart contains a nested HTTP request.\n\nYou can send the batch request to the specified `batchPath` for the API. The\n`batchPath` for Merchant API is `batch/{sub-api}/v1`. You can find the\n`batchPath` for other APIs in their [discovery\ndocuments](/discovery/v1/reference/apis).\n\nExamples of reasons to batch your requests include:\n\n- You just started using the API and have a lot of data to upload.\n- A user made changes to data while your application was offline, and your application needs to synchronize local data with the server.\n\nSending multiple requests in parallel prevents you from waiting for the slowest\nsub-request, which improves server response times and reduces latency.\n| **Tip:** For optimal performance of high-throughput tasks like product or inventory updates, we recommend starting with a moderate batch size and then scaling based on your API quota. For the API-specific quotas, see [Quota and\n| limits](/merchant/api/guides/quotas-limits)\n| **Note:** Batching requests doesn't reduce your usage count. If a batch has N individual requests, it counts as N requests against your quota.\n\nWrite a batch request\n\nHere's a sample Merchant API batch request. This request combines a get request\nto retrieve the regional inventory for a product, and an insert request to\nupdate the regional inventory for the same product. You should follow the format\nof the example exactly:\n\n1. Use `https://merchantapi.googleapis.com/batch/{sub-api}/v1` as the base URL.\n2. Specify a boundary to separate each nested request, for example: `-H\n 'Content-Type: multipart/mixed,boundary=batch_inventory' \\`\n3. Separate each nested request with the boundary, for example `--batch_inventory`.\n4. Include `Content-Type: application/http` at the beginning of each nested request.\n5. Use `Content-ID` to label each nested request with your own ID. For example: `Content-ID: \u003cget~en~US~123456\u003e`.\n6. Include a blank line between the header, path and body of each nested request. If the nested request doesn't have a body, leave a blank line before the next boundary.\n7. Don't include the base URL in each individual nested request.\n8. End the main request with a final boundary, for example `--batch_inventory--`.\n\n curl https://merchantapi.googleapis.com/batch/inventories/v1 \\\n -H 'Authorization: Bearer \u003cTOKEN\u003e' \\\n -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \\\n --data '\n --batch_inventory\n Content-Type: application/http\n Content-ID: \u003cget:online:en:US:123456\u003e\n GET /inventories/v1/accounts/123/products/online:en:US:123456/regionalInventories\n --batch_inventory\n Content-Type: application/http\n Content-ID: \u003cpost:online:en:US:123456\u003e\n POST /inventories/v1/accounts/123/products/online:en:US:123456/regionalInventories:insert\n {\n \"region: \"123456\",\n \"price\": {\n \"amountMicros\": \"100000000\",\n \"currencyCode\": \"USD\"\n }\n }\n --batch_inventory--\n '\n\nNotes on ordering\n\n- Requests might not execute in the order you specify them.\n- Use `Content-ID` to identify individual requests.\n- If you need to execute your calls in a given order, send them separately and wait for the response to the first request before sending the next one.\n\nRead a batch response\n\nHere's an example of an HTTP batch response. The order of the responses might\nnot match the order of the requests. Use `Content-ID` to identify the nested\nrequest each nested response belongs to. In the responses, the API adds a\n`response-` prefix to each `Content-ID`. \n\n --batch_inventory\n Content-Type: application/http\n Content-ID: \u003cresponse-get~en~US~123456\u003e\n HTTP/1.1 200 OK\n Content-Type: application/json; charset=UTF-8\n Vary: Origin\n Vary: X-Origin\n Vary: Referer\n {}\n --batch_inventory\n Content-Type: application/http\n Content-ID: \u003cresponse-post~en~US~123456\u003e\n HTTP/1.1 200 OK\n Content-Type: application/json; charset=UTF-8\n Vary: Origin\n Vary: X-Origin\n Vary: Referer\n {\n \"name\": \"accounts/123/products/en~US~123456/regionalInventories/123456\",\n \"region\": \"123456\",\n \"price\": {\n \"amountMicros\": \"100000000\",\n \"currencyCode\": \"USD\"\n }\n }\n --batch_inventory--\n '"]]