複数のリクエストを一度に送信する

Merchant API でバッチ リクエストを使用すると、1 回の API 呼び出しで複数の HTTP リクエストを送信できます。

クライアント ライブラリを使用してバッチ処理を行う場合は、同時実行リクエストのコードのリファクタリングをご覧ください。

バッチ リクエストは、multipart/mixed コンテンツ タイプを使用した単一の標準 HTTP リクエストで、複数の API 呼び出しから構成されます。メインの HTTP リクエスト内には、ネストされた HTTP リクエストを含む複数のパーツがあります。

バッチ リクエストは、API の指定された batchPath に送信できます。Merchant API ベータ版の batchPathbatch/{sub-api}/v1beta です。他の API の batchPath は、ディスカバリ ドキュメントで確認できます。リクエストをバッチ処理する理由の例を次に示します。

  • API の使用を開始したばかりで、アップロードするデータが大量にある。
  • アプリケーションがオフラインのときにユーザーがデータを変更したため、ローカルデータとサーバー間で同期させる必要がある。

バッチ リクエストを作成する

Merchant API バッチ リクエストの例を次に示します。このリクエストは、商品の地域別在庫を取得する get リクエストと、同じ商品の地域別在庫を更新する insert リクエストを組み合わせたものです。例の形式に厳密に従う必要があります。

  1. ベース URL として https://merchantapi.googleapis.com/batch/{sub-api}/v1beta を使用します。
  2. ネストされた各リクエストを区切る境界を指定します(例: -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \)。
  3. ネストされた各リクエストは境界(--batch_inventory など)で区切ります。
  4. ネストされた各リクエストの先頭に Content-Type: application/http を含めます。
  5. Content-ID を使用して、ネストされた各リクエストに独自の ID をラベル付けします。例: Content-ID: <get:online:en:US:123456>
  6. ネストされた各リクエストのヘッダー、パス、本文の間に空白行を含めます。ネストされたリクエストに本文がない場合は、次の境界前に空行を挿入します。
  7. ネストされた個々のリクエストに基本 URL を含めないでください。
  8. メイン リクエストを最終境界(--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--
'

注文に関する注意事項

  • リクエストは指定した順序で実行されない場合があります。
  • Content-ID を使用して個々のリクエストを識別します。
  • 呼び出しを特定の順序で実行する必要がある場合は、呼び出しを個別に送信し、最初のリクエストに対するレスポンスを受信してから次のリクエストを送信します。

バッチ レスポンスを読み取る

HTTP バッチ レスポンスの例を次に示します。レスポンスの順序はリクエストの順序と一致しない場合があります。Content-ID を使用して、各ネストされたレスポンスが属するネストされたリクエストを識別します。レスポンスでは、API は各 Content-IDresponse- 接頭辞を追加します。

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