一次发送多个请求

您可以将批量请求与 Merchant API 搭配使用,在一次 API 调用中发送多个请求。

批量请求是一个包含多个 API 调用的标准 HTTP 请求,使用 multipart/mixed 内容类型。在主 HTTP 请求中,每个部分都包含一个嵌套的 HTTP 请求。

您可以将批量请求发送到 API 的指定 batchPath。Merchant API Beta 版对应的 batchPathbatch/{sub-api}/v1beta。您可以在其他 API 的发现文档中找到相应 API 的 batchPath

下面列举了一些示例来说明您可能需要批量处理请求的情况:

  • 您刚刚开始使用 API,并且需要上传大量数据。
  • 用户在应用离线时更改了数据,并且应用需要与服务器同步本地数据。

如果您对 HTTP 批处理有疑问,或者想请求使用我们的客户端库发送批量请求,请提交反馈

编写批量请求

下面是一个 Merchant API 批量请求示例。此请求结合使用获取请求和插入请求来更新同一商品的地区商品目录,以检索商品的地区商品目录。

您应该严格遵循示例的格式:

  1. 使用 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. 请勿在每个嵌套请求中添加基准网址。

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