突变

这是GraphQL和Adobe Commerce系列的第3部分。 突变是指使用GraphQL保存、更新和返回值的能力。

本系列中GraphQL的相关视频和教程

示例突变

任何完整的API规范不仅需要提供查询数据的能力,还需要提供创建和更新数据的能力。

REST将区分更改数据的请求和不具有请求类型或“动词”(GET与POST或PUT)的请求。
使用GraphQL时,数据修改查询由对应于其他关键字的mutation关键字区分
在服务器上定义的架构中的根类型。

查看此示例突变以将产品添加到用户购物车。 (这需要生成的购物车ID
登录客户的会话或使用createEmptyCart突变。)

mutation doAddToCart(
    $cartId: String!,
    $cartItems: [CartItemInput!]!
) {
    addProductsToCart(
        cartId: $cartId
        cartItems: $cartItems
    ) {
        cart {
            total_quantity
            prices {
                grand_total {
                    value
                }
            }
        }
    }
}

您可以设想在请求中发送上述突变以及以下变量词典:

{
  "cartId": "{cart-id}",
  "cartItems": [
    {
      "quantity": 1,
      "sku": "VT01-RN-XS"
    }
  ]
}

最后,您可能会收到如下响应:

{
  "data": {
    "addProductsToCart": {
      "cart": {
        "total_quantity": 1,
        "prices": {
          "grand_total": {
            "value": 35.2
          }
        }
      }
    }
  }
}

关于上述示例,需要注意的主要事项是,除了使用mutation关键字而非query之外,
语法与查询相同。 与查询类似,变异包括:

  • 任意操作名称(doAddToCart)
  • 变量列表(例如,$cartId
  • 括号中包含参数(例如,cartId,设置为值$cartId)的初始字段(addProductsToCart)
  • 大括号中的字段的部分选择

字段子选择允许您灵活定义希望返回的字段(从指定为
完成变异后返回值addProductsToCart - AddProductsToCartOutput

如前所述,GraphQL架构中定义的字段从查询的根类型开始(通常称为Query)。 同样地,
突变存在另一种根类型(通常称为Mutation)。 addProductsToCart是一个字段
该根类型。

有关上述示例的其他几点注意事项:

  • !字符后缀StringCartItemInput表示该变量是必需的。
  • $cartItems指定的CartItemInput类型周围的方括号([])表示列表
    而不是单个值。

有用的GraphQL资源

recommendation-more-help
3a5f7e19-f383-4af8-8983-d01154c1402f