Mehrere Anfragen gleichzeitig senden

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

Eine Batchanfrage ist eine einzelne Standard-HTTP-Anfrage mit mehreren API-Aufrufen. Sie verwendet den Inhaltstyp multipart/mixed. Innerhalb der HTTP-Hauptanfrage enthält jeder Teil eine verschachtelte HTTP-Anfrage.

Du kannst die Batchanfrage für die API an den angegebenen batchPath senden. Die batchPath für die Betaversion der Merchant API ist batch/{sub-api}/v1beta . Sie finden die batchPath für andere APIs in den zugehörigen Discovery-Dokumenten.

Im Folgenden finden Sie einige Beispiele für Fälle, in denen Sie Anfragen im Batch zusammenfassen 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. Ihre Anwendung muss lokale Daten mit dem Server synchronisieren.

Wenn Sie Fragen zur HTTP-Batchverarbeitung haben oder die Möglichkeit zum Senden von Batchanfragen mit unseren Clientbibliotheken anfordern möchten, senden Sie uns Feedback.

Batchanfrage schreiben

Hier ist ein Beispiel für eine Händler-API-Batchanfrage. Diese Anfrage kombiniert eine get-Anfrage zum Abrufen des regionalen Inventars für ein Produkt mit einer Einfügeanfrage, um das lokale Inventar für dasselbe Produkt zu aktualisieren.

Halten Sie sich genau an das Format des Beispiels:

  1. Verwenden Sie https://merchantapi.googleapis.com/batch/{sub-api}/v1beta als Basis-URL.
  2. Geben Sie eine Grenze zur Trennung der einzelnen verschachtelten Anfragen an. Beispiel:

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

  3. Trennen Sie alle verschachtelten Anfragen durch die Begrenzung, z. B. --batch_inventory.

  4. Fügen Sie Content-Type: application/http am Anfang jeder verschachtelten Anfrage ein.

  5. Optional: Verwenden Sie Content-ID, um jeder verschachtelten Anfrage ein Label mit Ihrer eigenen ID hinzuzufügen. Beispiel:

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

  6. Fügen Sie zwischen Header, Pfad und Text jeder verschachtelten Anfrage eine leere Zeile ein. Wenn die verschachtelte Anfrage keinen Text hat, lassen Sie vor der nächsten Grenze eine leere Zeile.

  7. Geben 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/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--
'

Wenn Sie Aufrufe in einer bestimmten Reihenfolge ausführen müssen, senden Sie sie separat. Warten Sie auf die Antwort auf die erste Anfrage, bevor Sie die nächste senden.

Batchantwort lesen

Hier ist ein Beispiel für eine HTTP-Batch-Antwort. Die Reihenfolge der Antworten entspricht möglicherweise nicht der Reihenfolge der Anfragen. Verwenden Sie Content-ID, um die verschachtelte Anfrage zu identifizieren, zu der die einzelnen verschachtelten Antworten gehören. In den Antworten ist jeder Content-ID-Klausel das Präfix response- vorangestellt.

--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--
'