Merchant API でバッチ リクエストを使用すると、1 回の API 呼び出しで複数の HTTP リクエストを送信できます。
クライアント ライブラリでバッチ処理を行う場合は、同時リクエスト用にコードをリファクタリングするをご覧ください。
バッチ リクエストは multipart/mixed コンテンツ タイプを使用した単一の標準 HTTP リクエストで、複数の API 呼び出しから構成されます。メインの HTTP リクエスト内の各パーツには、ネストされた HTTP リクエストが含まれます。
バッチ リクエストは、API の指定された batchPath に送信できます。Merchant API の batchPath は batch/{sub-api}/v1 です。他の API の batchPath は、それぞれのディスカバリ ドキュメントで確認できます。
リクエストをバッチ処理する理由の例は次のとおりです。
- API の使用を開始したばかりで、アップロードするデータが大量にある。
- アプリケーションがオフラインのときにユーザーがデータを変更したため、ローカルデータとサーバー間で同期させる必要がある。
複数のリクエストを並行して送信すると、最も遅いサブ リクエストを待つ必要がなくなり、サーバーの応答時間が短縮され、レイテンシが短縮されます。
バッチ リクエストを作成する
Merchant API のバッチ リクエストの例を次に示します。このリクエストは、商品の地域別在庫を取得する get リクエストと、同じ商品の地域別在庫を更新する insert リクエストを組み合わせたものです。例の形式に正確に従ってください。
- ベース URL として https://merchantapi.googleapis.com/batch/{sub-api}/v1を使用します。
- ネストされた各リクエストを区切る境界を指定します(例: -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \)。
- ネストされたリクエストは、境界(--batch_inventoryなど)で区切ります。
- ネストされた各リクエストの先頭に Content-Type: application/httpを含めます。
- Content-IDを使用して、ネストされた各リクエストに独自の ID でラベルを付けます。例:- Content-ID: <get~en~US~123456>。
- ネストされた各リクエストのヘッダー、パス、本文の間に空白行を含めます。ネストされたリクエストに本文がない場合は、次の境界の前に空白行を残します。
- 個々のネストされたリクエストにベース URL を含めないでください。
- メイン リクエストを最終的な境界(--batch_inventory–など)で終了します。
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-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/v1/accounts/123/products/online:en:US:123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>
POST /inventories/v1/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-ID に response- 接頭辞を追加します。
--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--
'