Envoyer plusieurs demandes à la fois

Vous pouvez utiliser des requêtes par lot. avec l'API Merchant Center pour envoyer plusieurs requêtes via un seul appel d'API.

Une requête par lot est une requête HTTP standard unique qui contient plusieurs appels d'API, à l'aide du type de contenu multipart/mixed. Dans la requête HTTP principale, chaque contient une requête HTTP imbriquée.

Vous pouvez envoyer la requête par lot au batchPath spécifié pour l'API. La batchPath pour la version bêta de l'API Merchant Center est batch/{sub-api}/v1beta . Vous trouverez le batchPath pour les autres API dans leur détection documents.

Voici quelques exemples de situations dans lesquelles vous pouvez avoir besoin de regrouper vos requêtes:

  • Vous venez de commencer à utiliser l'API et vous avez beaucoup de données à importer.
  • Un utilisateur a modifié des données alors que votre application était hors connexion, et votre l'application doit synchroniser les données locales avec le serveur.

Si vous avez des questions sur le traitement HTTP par lot ou si vous souhaitez d'envoyer des requêtes par lot avec notre client bibliothèques, envoyez commentaires.

Écrire une requête par lot

Voici un exemple de requête par lot pour l'API Merchant Center. Cette requête combine une requête get pour récupérer l'inventaire régional d'un produit, et une demande d'insertion mettre à jour l'inventaire en magasin pour le même produit.

Vous devez suivre exactement le format de l'exemple:

  1. Utiliser https://merchantapi.googleapis.com/batch/{sub-api}/v1beta comme base URL.
  2. Spécifiez une limite pour séparer chaque requête imbriquée, par exemple:

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

  3. Séparez chaque requête imbriquée avec une limite, par exemple --batch_inventory

  4. Incluez Content-Type: application/http au début de chaque ligne imbriquée. requête.

  5. (Facultatif) Utilisez Content-ID pour ajouter un libellé à chaque requête imbriquée avec votre propre ID. Exemple :

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

  6. Incluez une ligne vide entre l'en-tête, le chemin d'accès et le corps de chaque élément requête. Si la requête imbriquée n'a pas de corps, laissez une ligne vide. avant la limite suivante.

  7. N'incluez pas l'URL de base dans chaque requête imbriquée individuelle.

  8. Terminez la requête principale par une limite finale, par exemple --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--
'

Si vous devez exécuter vos appels dans un ordre donné, envoyez-les séparément et attendre 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 correspondent pas à l'ordre des requêtes. Utilisez Content-ID pour identifier l'élément à laquelle appartient chaque réponse imbriquée. Dans les réponses, chaque Content-ID est commençant par 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--
'