Une requête par lot est une requête HTTP standard unique qui comprend plusieurs appels d'API et utilise le type de contenu multipart/mixed. Chacune des parties de cette requête HTTP principale contient une requête HTTP imbriquée.
Vous pouvez envoyer la requête par lot au batchPath spécifié pour l'API. L'batchPath de l'API Merchant est batch/{sub-api}/v1. Vous trouverez le batchPath des autres API dans leurs documents de découverte.
Voici quelques exemples de raisons pour lesquelles vous pouvez regrouper vos demandes :
Vous venez de commencer à utiliser l'API et vous avez de nombreuses données à importer.
Un utilisateur a modifié des données lorsque votre application était hors connexion. Celle-ci doit donc synchroniser les données locales avec le serveur.
L'envoi de plusieurs requêtes en parallèle vous évite d'attendre la sous-requête la plus lente, ce qui améliore les temps de réponse du serveur et réduit la latence.
Écrire une requête par lot
Voici un exemple de requête par lot de l'API Merchant. Cette requête combine une requête GET pour récupérer l'inventaire régional d'un produit et une requête INSERT pour mettre à jour l'inventaire régional du même produit. Vous devez respecter exactement le format de l'exemple :
Utilisez https://merchantapi.googleapis.com/batch/{sub-api}/v1 comme URL de base.
Spécifiez une limite pour séparer chaque requête imbriquée, par exemple : -H
'Content-Type: multipart/mixed,boundary=batch_inventory' \
Séparez chaque requête imbriquée par la limite, par exemple --batch_inventory.
Incluez Content-Type: application/http au début de chaque requête imbriquée.
Utilisez Content-ID pour attribuer votre propre ID à chaque requête imbriquée. Exemple : Content-ID: <get~en~US~123456>.
Incluez une ligne vide entre l'en-tête, le chemin et le corps de chaque requête imbriquée. Si la requête imbriquée n'a pas de corps, laissez une ligne vide avant la limite suivante.
N'incluez pas l'URL de base dans chaque requête imbriquée individuelle.
Terminez la requête principale par une limite finale, par exemple --batch_inventory–.
Il est possible que les requêtes ne s'exécutent pas dans l'ordre que vous spécifiez.
Utilisez Content-ID pour identifier les requêtes individuelles.
Si vous devez exécuter vos appels dans un ordre donné, envoyez-les séparément et attendez la réponse à la première requête avant d'envoyer la suivante.
Lire une réponse par lot
Voici un exemple de réponse HTTP par lot. L'ordre des réponses peut ne pas correspondre à celui des requêtes. Utilisez Content-ID pour identifier la requête imbriquée à laquelle appartient chaque réponse imbriquée. Dans les réponses, l'API ajoute un préfixe response- à chaque Content-ID.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/26 (UTC).
[null,null,["Dernière mise à jour le 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 '"]]