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

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

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

API に指定された batchPath にバッチ リクエストを送信できます。Merchant API ベータ版の batchPathbatch/{sub-api}/v1beta です。他の API の batchPath については、ディスカバリ ドキュメントをご覧ください。

リクエストのバッチ処理が必要となるケースの例としては、次のようなものが挙げられます。

  • API を使い始めたばかりで、アップロードするデータが大量にあります。
  • アプリがオフライン中にユーザーがデータを変更したため、アプリがローカルデータをサーバーと同期する必要があります。

HTTP バッチ処理についてご不明な点がある場合、またはクライアント ライブラリを使用してバッチ リクエストを送信する機能をリクエストしたい場合は、フィードバックを送信してください。

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

Merchant API バッチ リクエストの例を次に示します。このリクエストは、商品の地域別の在庫を取得する get リクエストと、同じ商品のローカル在庫を更新する挿入リクエストを組み合わせたものです。

サンプルの形式に厳密に従う必要があります。

  1. https://merchantapi.googleapis.com/batch/{sub-api}/v1beta をベース URL として使用します。
  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--
'

指定した順序で呼び出しを実行する必要がある場合は、呼び出しを個別に送信し、最初のリクエストに対するレスポンスを待ってから次のリクエストを送信します。

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

これは、HTTP バッチ レスポンスの例です。レスポンスの順序はリクエストの順序と一致しない場合があります。ネストされたレスポンスが属するネストされたリクエストを特定するには、Content-ID を使用します。レスポンスでは、各 Content-ID の先頭に 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--
'