Mehrere Anfragen gleichzeitig senden

Sie können Batchanfragen mit der Merchant API verwenden, um mehrere HTTP-Anfragen in einem einzigen API-Aufruf zu senden.

Wenn Sie die Batchverarbeitung mit Clientbibliotheken bevorzugen, lesen Sie den Abschnitt Code für gleichzeitige Anfragen refaktorieren.

Eine Batchanfrage ist eine einzelne Standard-HTTP-Anfrage, die mehrere API-Aufrufe enthält. Dabei wird der Inhaltstyp multipart/mixed verwendet. Jeder Teil der HTTP-Hauptanfrage enthält eine verschachtelte HTTP-Anfrage.

Sie können die Batchanfrage an den angegebenen batchPath für die API senden. Die batchPath für die Merchant API ist batch/{sub-api}/v1. Die batchPath für andere APIs finden Sie in den entsprechenden Discovery-Dokumenten.

Beispiele für Gründe, warum Sie Ihre Anfragen im Batch senden sollten:

  • Sie haben gerade mit der Verwendung der API begonnen und müssen viele Daten hochladen.
  • Ein Nutzer hat Änderungen an Daten vorgenommen, während Ihre Anwendung offline war, und Ihre Anwendung muss die lokalen Daten mit dem Server synchronisieren.

Wenn Sie mehrere Anfragen parallel senden, müssen Sie nicht auf die langsamste Unteranfrage warten. Dadurch werden die Serverantwortzeiten verbessert und die Latenz reduziert.

Batchanfrage schreiben

Hier ist ein Beispiel für eine Merchant API-Batchanfrage. Diese Anfrage kombiniert eine GET-Anfrage zum Abrufen des regionalen Inventars für ein Produkt und eine INSERT-Anfrage zum Aktualisieren des regionalen Inventars für dasselbe Produkt. Sie sollten sich genau an das Format des Beispiels halten:

  1. Verwenden Sie https://merchantapi.googleapis.com/batch/{sub-api}/v1 als Basis-URL.
  2. Geben Sie eine Grenze an, um die einzelnen verschachtelten Anfragen voneinander zu trennen, z. B. -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \.
  3. Trennen Sie die einzelnen verschachtelten Anfragen durch die Begrenzung, z. B. --batch_inventory.
  4. Fügen Sie am Anfang jeder verschachtelten Anfrage Content-Type: application/http ein.
  5. Verwenden Sie Content-ID, um jede verschachtelte Anfrage mit Ihrer eigenen ID zu kennzeichnen. Beispiel: Content-ID: <get~en~US~123456>.
  6. Fügen Sie zwischen dem Header, dem Pfad und dem Text jeder verschachtelten Anfrage eine Leerzeile ein. Wenn die verschachtelte Anfrage keinen Text hat, lassen Sie vor der nächsten Grenze eine Leerzeile.
  7. Fügen Sie die Basis-URL nicht in jede einzelne verschachtelte Anfrage ein.
  8. Beenden Sie die Hauptanfrage mit einer endgültigen Grenze, z. B. --batch_inventory–.
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get~en~US~123456>

GET /inventories/v1/accounts/123/products/en~US~123456/regionalInventories

--batch_inventory
Content-Type: application/http
Content-ID: <post~en~US~123456>

POST /inventories/v1/accounts/123/products/en~US~123456/regionalInventories:insert
{
  "region": "123456",
  "price": {
    "amountMicros": "100000000",
    "currencyCode": "USD"
  }
}

--batch_inventory--'

Hinweise zur Bestellung

  • Anfragen werden möglicherweise nicht in der von Ihnen angegebenen Reihenfolge ausgeführt.
  • Verwenden Sie Content-ID, um einzelne Anfragen zu identifizieren.
  • Wenn Sie Ihre Aufrufe in einer bestimmten Reihenfolge ausführen müssen, senden Sie sie separat und warten Sie auf die Antwort auf die erste Anfrage, bevor Sie die nächste senden.

Batchantwort lesen

Hier ein Beispiel für eine HTTP-Batchantwort: Die Reihenfolge der Antworten entspricht möglicherweise nicht der Reihenfolge der Anfragen. Verwenden Sie Content-ID, um die verschachtelte Anfrage zu identifizieren, zu der jede verschachtelte Antwort gehört. In den Antworten fügt die API jedem Content-ID das Präfix response- hinzu.

--batch_inventory
Content-Type: application/http
Content-ID: <response-get~en~US~123456>
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{}
--batch_inventory
Content-Type: application/http
Content-ID: <response-post~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/en~US~123456/regionalInventories/123456",
  "region": "123456",
  "price": {
    "amountMicros": "100000000",
    "currencyCode": "USD"
  }
}
--batch_inventory--

Limits

Für Batchanfragen gelten die folgenden Limits:

  • 2.000 verschachtelte Anfragen pro Batchanfrage.

Wenn eine Batchanfrage eines dieser Limits überschreitet, gibt die API den Fehler 400 Bad Request zurück und lehnt die gesamte Anfrage ab.