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
}
]
}
}
}
我正在努力使用 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
}
]
}
}
}