Magento 2 REST-API POST V1/guest-carts/{cartId}/items 400 或 404

Magento 2 REST-API POST V1/guest-carts/{cartId}/items either 400 or 404

我正在努力使用 REST-API 将产品添加到访客购物车。我尝试了导致 404 或 400 错误的不同方法。

第一种方法来自文档,或者至少是我对它们的解释。第二种方法来自另一个堆栈交换答案。我一定是忽略或混淆了某些东西。什么是正确的方法?

第一种方法:

创建新的访客购物车

请求

POST: V1/guest-carts

回复:

"EDzeXsnat8aODucV5zRVa6o7yChZ9je9"

将产品添加到访客购物车

请求

POST: V1/guest-carts/EDzeXsnat8aODucV5zRVa6o7yChZ9je9/items

{
  "cart_item": {
    "quote_id": "EDzeXsnat8aODucV5zRVa6o7yChZ9je9",
    "product_type": "configurable",
    "sku": "032501-42",
    "qty": 1,
    "extension_attributes": {},
    "product_option": {
      "extension_attributes": {
        "configurable_item_options": [
          {
            "option_id": "168",
            "option_value": 278
          }
        ]
      }
    }
  }
}

回应

400 - Bad request


第二种方法:

this answer 我了解到中间应该有一个额外的步骤,因为您必须使用实际的引用 ID 而不是 V1/guest-carts 返回的掩码。这会将流程更改为以下内容。

创建新的访客购物车

请求

POST: V1/guest-carts

回复:

"EDzeXsnat8aODucV5zRVa6o7yChZ9je9"

请求报价 ID

请求

GET: V1/guest-carts/EDzeXsnat8aODucV5zRVa6o7yChZ9je9

回应

{
  "id": 95563,
  // etc ...
}

将产品添加到访客购物车

请求

POST: V1/guest-carts/95563/items

{
  "cart_item": {
    "quote_id": "95563",
    "product_type": "configurable",
    "sku": "032501-42",
    "qty": 1,
    "extension_attributes": {},
    "product_option": {
      "extension_attributes": {
        "configurable_item_options": [
          {
            "option_id": "168",
            "option_value": 278
          }
        ]
      }
    }
  }
}

回应

404 - No route found

您需要在 url 中使用掩码并在有效载荷中使用 id 本身。您也可以直接使用该可配置产品的特定简单产品的 sku,而不是添加可配置产品和选项。

POST: V1/guest-carts/EDzeXsnat8aODucV5zRVa6o7yChZ9je9/items

{
  "cart_item": {
    "quote_id": 95563,
    "product_type": "configurable",
    "sku": "032501-42",
    "qty": 1,
    "extension_attributes": {},
    "product_option": {
      "extension_attributes": {
        "configurable_item_options": [
          {
            "option_id": "168",
            "option_value": 278
          }
        ]
      }
    }
  }