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