您可以使用批量请求 使用 Merchant API 在单次 API 调用中发送多个请求。
批量请求是包含多个 API 调用的单个标准 HTTP 请求,
multipart/mixed
内容类型。在主 HTTP 请求中
部分包含一个嵌套的 HTTP 请求。
您可以将批量请求发送到 API 的指定 batchPath
。通过
Merchant API Beta 版 batchPath
为 batch/{sub-api}/v1beta
。您可以
其他 API 在发现阶段中的 batchPath
文档。
以下是可能希望对请求进行批处理的一些示例:
- 您刚刚开始使用该 API,需要上传大量数据。
- 用户在您的应用处于离线状态时更改了数据,并且您的 应用需要与服务器同步本地数据。
如果您对 HTTP 批处理有疑问,或者想要请求 使用我们的客户端发送批量请求, 库、提交 反馈。
编写批量请求
下面是一个 Merchant API 批量请求示例。此请求合并了 get 请求 检索商品的地区商品目录,并将插入请求发送到 更新同一商品的本地商品目录。
您应该完全遵循示例的格式:
- 使用
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
作为基础 网址。 请指定用于分隔每个嵌套请求的边界,例如:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
例如,用边界分隔每个嵌套请求
--batch_inventory
。在每个嵌套层的开头添加
Content-Type: application/http
请求。(可选)使用
Content-ID
使用自己的 ID 为每个嵌套请求添加标签。 例如:Content-ID: <get:online:en:US:123456>
。在每个嵌套项的标头、路径和正文之间添加一个空白行 请求。如果嵌套请求没有正文,请留空 下一个边界之前的位置。
不要在每个嵌套请求中添加基准网址。
以最终边界结束主请求,例如
--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--
'